【发布时间】:2020-12-03 11:32:26
【问题描述】:
如何从回调函数返回值?
代码
function storeData(data) {
const id = "5f354b7470e79f7e5b6feb25";
const body = { name: "john doe" };
bucket.insert(id, body, (error, result) => {
console.log(error, result); // i want to return error & result from this callback
});
}
export default {
async createAd(_, { data }, { request }) {
try {
const dataa = await storeData(data);
return; // to here
} catch (error) {
console.log(error);
}
},
};
这里我需要将来自bucket.insert 回调的值(错误,结果)返回到函数createAd 并从那里返回该值。
bucket.insert --> createAd
它应该如何实际工作
-
createAd函数调用时 -
createAd函数应该调用storeData(data)函数,其中数据存储在 DB 中 - 使用函数
bucket.insert存储数据后 -
bucket.insert回调返回值error和result -
storeData应该将bucket.insert回调值返回给createAd -
createAd返回值应该包含storeData返回值
bucket.insert 应该包含一个回调,否则它会抛出一个错误 Third argument needs to be an object or callback.
已尝试解决方案
- promisifing bucket.insert 与 nodejs util.promisify
【问题讨论】:
-
暴力转换为承诺:
return new Promise((res, rej) => bucket.insert(..., (error, result) => { if (error) rej(error) else res(result); }))...
标签: javascript node.js promise async-await callback