Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 异步等待回调不是函数_Javascript_Asynchronous_Ecmascript 6 - Fatal编程技术网

Javascript 异步等待回调不是函数

Javascript 异步等待回调不是函数,javascript,asynchronous,ecmascript-6,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'});

我正在使用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

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

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);
    }
}

另一个选择是查看,但我懒得这么做。

奥斯曼帝国不会回报承诺。@Alvin,没有人声称会回报。请尝试此代码,它表示
事务。保存
方法。只需确保在
resolve()
之前放置一个
else