Javascript 异步等待回调不是函数
我正在使用couchbase ottaman软件包: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'});
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
。