我有以下代码:
updateDocument = (data) => {
Cloudant(CONN_STRING, (err, cloudant) => {
if (err) {
throw new Error('Failed to initialize Cloudant: ' + err.message);
}
let db = cloudant.db.use('my-db')
db.insert(data, (err, result) => {
if (err) {
throw new Error('Failed to initialize Cloudant: ' + err.message);
}
else {
console.log(result);
}
})
});
}我希望updateDocument()返回db.insert提供的结果。但是,如果我试图返回一个变量,它是未定义的(我相信是因为异步调用)。我尝试过async和await,但是我可能没有正确地设置它们,因为它们也没有工作。
谢谢你的帮助!
发布于 2017-09-13 15:11:28
这是一个"JavaScript是异步的“问题。您可以将updateDocument函数简化如下:
updateDocument = (data) => {
var cloudant = Cloudant({ url: CONN_STRING, plugin: 'promises');
let db = cloudant.db.use('my-db')
return db.insert(data);
}这是使用Cloudant库与“承诺”插件。JavaScript承诺帮助您在不传递回调函数的情况下管理异步调用。
您可以这样称呼这段代码:
updateDocument({a: 1, :b})
.then((data) => {
console.log('success!', data);
}.catch((e) => {
console.log('oops!', e);
});成功到达‘那么’,失败在‘抓住’子句中。
https://stackoverflow.com/questions/46200313
复制相似问题