在内部回调中解析异步函数

Resolving async function within internal callback

当从函数中显式 returning 一个 new Promise 时,我们得到 resolvereject 函数传入。我们可以随时在我们的函数中使用这些方法指示承诺的解决或拒绝,包括内部对其他函数的内部回调。

考虑:

const doSomeDbWork = function (db) {
   return new Promise((resolve, reject) => {
     db.doStuff(result => resolve(result));
   });
};

当我们不能等待(就像这个数据库回调的情况)时,在没有显式 returning a new Promise 的情况下使用 async 是否有等效项?

const doSomeDbWork = async function (db) {
  db.doStuff(result => /* ? */);
};

我目前认为这是不可能的,我只需要 return 一个新的 Promise。我错过了一个把戏吗?有办法吗?

Is there an equivalent when using async without explicitly returning a new Promise.

没有。 async/await 只适用于承诺(或 thenables),你必须 promisify 其他一切 你自己 。在您的情况下,这很可能类似于

async function doSomeDbWork(db) {
    return new Promise(db.doStuff);
}

async function doSomeDbWork(db) {
     return new Promise(resolve => { db.doStuff(resolve); });
}

(可能在 return 后加上 await)。