2 回答

TA贡献1775条经验 获得超11个赞
function async2() {
console.log( 'async2');
}
async function async1(resolve) {
await setTimeout(function () {
console.log("settimeout");
//当我认定async1完成后才开始async2
resolve()
},0);
}
new Promise(function (resolve) {
async1(resolve)
}).then(function () {
async2()
});
或者
new Promise(function (resolve) {
async1()
resolve()
}).then(function () {
async2()
});
虽然记得不是很清楚了,但第一种代码似乎被称作“Promise构造器反模式”,最大的问题是async1
抛出的错误会被吃掉。
如果我没有记错,是不提倡把resolve
泄露出去的,而且不应该在构造器里出现任何Promise,应该.then
下去。我见到的最佳实践都是构造器只包装老API,不放逻辑。所以这段代码虽然看起来涨姿势,我个人还是觉得值得商榷的。
添加回答
举报