如何使用异步方式编写此代码,仅等待:
new Promise((resolve, reject) => {
setTimeout(() => {
resolve(‘done’)
}, 1000)
}
答案 0 :(得分:3)
不能。 async
和await
的作用是可以替换.then
,例如:
function foo(someProm) {
return someProm.then(() => {
console.log('someProm done');
});
}
可以变成
async function foo(someProm) {
await someProm;
console.log('someProm done');
}
如果返回值是同步的,他们还可以自动将返回值包装在Promise中-例如
async function foo() {
return '2';
}
将返回解决为2的Promise。
但是async
和await
不能代替通用的Promise构造函数。如果您有基于回调的API,并且希望在回调完成时解决Promise,则不能将async
和await
用于该任务-您必须在此处使用new Promise
。
有一个例外值得一提,不应该使用。在setTimeout
的特定情况下,当创建Promise到解决它之间不需要做其他任何事情时,从理论上讲,可以创建一个{em> blocks 持续几秒钟,然后解决:
async
(仅供参考。请勿使用该代码)