async await回调不是一个函数

时间:2017-05-27 14:34:11

标签: 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

1 个答案:

答案 0 :(得分:1)

基本上,你必须检查它是否会返回承诺 - 你可以在盒子外面使用它。如果没有 - 你可以宣传你需要的功能。 结果中有这样的事情:

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,但我太懒了。