2 回答

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超11個(gè)贊
function async2() {
console.log( 'async2');
}
async function async1(resolve) {
await setTimeout(function () {
console.log("settimeout");
//當(dāng)我認(rèn)定async1完成后才開始async2
resolve()
},0);
}
new Promise(function (resolve) {
async1(resolve)
}).then(function () {
async2()
});
或者
new Promise(function (resolve) {
async1()
resolve()
}).then(function () {
async2()
});
雖然記得不是很清楚了,但第一種代碼似乎被稱作“Promise構(gòu)造器反模式”,最大的問題是async1
拋出的錯(cuò)誤會(huì)被吃掉。
如果我沒有記錯(cuò),是不提倡把resolve
泄露出去的,而且不應(yīng)該在構(gòu)造器里出現(xiàn)任何Promise,應(yīng)該.then
下去。我見到的最佳實(shí)踐都是構(gòu)造器只包裝老API,不放邏輯。所以這段代碼雖然看起來漲姿勢,我個(gè)人還是覺得值得商榷的。
添加回答
舉報(bào)