79 lines
2.1 KiB
JavaScript
79 lines
2.1 KiB
JavaScript
|
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()
|