Javascript使用异步/等待传递/链接诺言

时间:2019-01-13 22:23:32

标签: javascript async-await

是否可以使用Javascript等待已发送但尚未解决的承诺?

async function doStuff(nth) {
  setTimeout(() => console.log(nth), 2000);
}


async function waitForMe(prom, callback, nth) {
  await prom;
  await callback(nth);
}


const v = doStuff(1);
waitForMe(v, doStuff, 2);

以上代码并行执行;对于我的问题,用户可以在运行时在完成之前再次调用doStuff,并且必须按顺序执行。

1 个答案:

答案 0 :(得分:3)

你不能这样吗?

function doStuff(nth) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      console.log(nth);
      resolve("done");
    }, 2000);
  });
}

async function waitForMe(prom, callback, nth) {
  await prom;
  await callback(nth);
}

const v = doStuff(1);
waitForMe(v, doStuff, 2);