4

new Promise从我们得到的函数显式返回 aresolvereject传入函数时。我们可以随时在函数内部使用这些方法来指示 promise 的解决或拒绝,包括内部对其他函数的内部回调。

考虑:

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

当我们也不能等待时(比如在这个数据库回调的情况下),在async没有显式返回 a的情况下使用时是否有等价物?new Promise

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

我目前认为这是不可能的,我只需要返回一个新的 Promise。我错过了一个技巧吗?有没有办法做到这一点?

4

1 回答 1

1

async在没有显式返回 a 的情况下使用时是否有等价物new Promise

不。async/只适用于承诺(或thenablesawait),你必须自己承诺其他一切。在你的情况下,这很可能是这样的

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

或者

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

(可能在await后面加上return)。

于 2016-02-22T19:04:39.703 回答