go17/skills/web/js/index.mjs

79 lines
2.1 KiB
JavaScript
Raw Normal View History

2024-12-22 11:40:18 +08:00
import profile from './profile.mjs'
// pkg.
//
console.log(profile.firstName, profile.lastName, profile.year)
// 模拟的一次网络IO
// executor: (resolve: (value: any) => void, reject: (reason?: any) => void)
function testResultCallbackFunc(success, failed) {
var timeOut = Math.random() * 2;
console.log('set timeout to: ' + timeOut + ' seconds.');
setTimeout(function () {
if (timeOut < 1) {
console.log('call resolve()...');
success('200 OK');
} else {
console.log('call reject()...');
failed('timeout in ' + timeOut + ' seconds.');
}
}, timeOut * 1000);
}
// testResultCallbackFunc(data => console.log(data), err => console.log(err))
// testResultCallbackFunc(data => console.log(data), err => console.log(err))
// testResultCallbackFunc(data => console.log(data), err => console.log(err))
// JS 编程范式
// new Promise(testResultCallbackFunc).then((value) => {
// console.log(value)
// }).catch((err) => {
// console.log(err)
// }).finally(() => {
// console.log('finally')
// })
// new Promise(testResultCallbackFunc).then((value) => {
// console.log(value)
// }).catch((err) => {
// console.log(err)
// }).finally(() => {
// console.log('finally')
// })
// new Promise(testResultCallbackFunc).then((value) => {
// console.log(value)
// }).catch((err) => {
// console.log(err)
// }).finally(() => {
// console.log('finally')
// })
// async + await 控制异步的调用顺序,也就是同步编程
// A -> B() -> C()
// set timeout to: 0.9367326782693821 seconds.
// call resolve()...
// set timeout to: 0.09577379370967654 seconds.
// call resolve()...
// set timeout to: 0.5294275808882718 seconds.
// call resolve()...
var bizfn = async () => {
try {
var a = new Promise(testResultCallbackFunc)
await a
var b = new Promise(testResultCallbackFunc)
await b
var c = new Promise(testResultCallbackFunc)
await c
} catch(err) {
console.log(err)
}
// a.then(() => {
// b.then(()=> {
// c.then(() => {
// })
// })
// })
}
bizfn()