javascript - 异步等待回调不是函数

标签 javascript asynchronous ecmascript-6

<分区>

我正在使用 couchbase ottaman 包:

let transaction = new Transaction({name:'Couch'});
    transaction.save((err) => {
        console.log(err);
    });

但是我可以对这个包使用 async/await 吗?

async create(){
        let transaction = new Transaction({name:'Couch'});
        try{
            await transaction.save();
        } catch (err) {
            console.log(err);
        }
    }

我遇到错误:

node_modules\ottoman\lib\modelinstance.js:457
            callback(err);
            ^

TypeError: callback is not a function

最佳答案

基本上,您必须检查它是否返回 promise - 您可以开箱即用。如果没有 - 你可以 promise 你需要的功能。 结果是这样的:

function saveModel(transaction) {
  return new Promise ((resolve, reject) => {
    transaction.save(err => {
      if (err) 
         reject(err);
      else
         resolve();
    });
  });
}

此类函数可以与 async/await 一起使用:

async create(){
  let transaction = new Transaction({name:'Couch'});
    try{
      await saveModel(transaction);
    } catch (err) {
      console.log(err);
    }
}

另一种选择是查看 source files , 但我懒得去做。

关于javascript - 异步等待回调不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44218108/

相关文章:

javascript - 降低对象列表之间比较的复杂度 O^2

javascript - 如何在 js 脚本中读取 docker 环境变量?

javascript - 如何在对象构造期间使用异步生成的值来分配属性?

javascript - 单击时未切换类

javascript - 如何使用 AJAX 将值传递给 PHP 脚本?

javascript - Backbone.js View 在其创建期间的生命周期

javascript - 如何检查变量是否是生成器函数? (例如函数*产量)

javascript - 现代浏览器中的 TypeScript 支持

javascript - 使用 APDU 的 Node.js 异步请求

ios - 如何在网络断开时停止 URLSessionTask?