代码之家  ›  专栏  ›  技术社区  ›  Jamie Dixon

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

  •  4
  • Jamie Dixon  · 技术社区  · 8 年前

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

    考虑:

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

    使用时是否有等效物 async 而不显式返回 新的承诺 当我们不能等待时(就像这个db回调的情况)?

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

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

    1 回复  |  直到 8 年前
        1
  •  1
  •   Community Egal    7 年前

    使用时是否有等效物 async 而不显式返回 new Promise .

    异步 / await 只适用于承诺(或承诺),你必须 promisify 其他一切 你自己 在你的情况下,这很可能是这样的

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

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

    (可能使用 等候 return ).