如何在settimeout内解析异步函数

时间:2020-02-18 03:31:25

标签: javascript node.js

如何使用异步方式编写此代码,仅等待:

new Promise((resolve, reject) => { 
 setTimeout(() => {
   resolve(‘done’)
 }, 1000)
}

1 个答案:

答案 0 :(得分:3)

不能。 asyncawait的作用是可以替换.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。

但是asyncawait 不能代替通用的Promise构造函数。如果您有基于回调的API,并且希望在回调完成时解决Promise,则不能将asyncawait用于该任务-您必须在此处使用new Promise


有一个例外值得一提,不应该使用。在setTimeout的特定情况下,当创建Promise到解决它之间不需要做其他任何事情时,从理论上讲,可以创建一个{em> blocks 持续几秒钟,然后解决:

async

(仅供参考。请勿使用该代码)