通常,期望的行为是开发人员希望确保在实现或拒绝特定承诺之前不会执行任何其他代码。如今,使用async / await模式可以轻松实现这一点。
但是,我有一种情况,希望同时需要执行其他代码,同时实现一个Promise(这很可能会成功解决!)。这就是为什么我没有在puropse上设置await修饰符的原因;到现在为止还挺好。但是,当诺言的状态为“待处理”而不是“已解决”时,如何确保在时间窗口内执行一段代码?就像,在不知道它是否被拒绝之前?
我想像是一个while循环,但是由于[[PromiseStatus]]属性不可访问,因此我每次都必须键入'then'才能访问promise值,而无限地使用(then)不会似乎并不是真正可行的解决方案。
任何见解都会受到赞赏。
答案 0 :(得分:0)
这就是承诺本机工作的方式。您可以先没有await
关键字,然后再准备好await
来启动它们。下面的演示演示了此操作。
async function dummyPromise(){
return new Promise(resolve => setTimeout(resolve,3000));
}
async function test(){
var prom = dummyPromise();
console.log("This line runs while the promise is pending");
await prom;
console.log("This line runs after the promise resolves");
}
test();