如何从回调函数中获取 return 值?
How to return value from callback function?
如何从回调函数中 return 值?
代码
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);
}
},
};
这里我需要 return 值(错误,结果)来自 bucket.insert
回调到函数 createAd
和 return 来自那里的值。
bucket.insert --> createAd
实际应该如何运作
- 当
createAd
函数调用时
createAd
函数应该调用 storeData(data)
函数,其中数据存储在 DB
- 使用函数
bucket.insert
存储数据后
bucket.insert
回调return值error
和result
storeData
应该 return bucket.insert
回调值 createAd
createAd
return 值应该包含 storeData
return 值
bucket.insert
应该包含回调,否则会抛出错误 Third argument needs to be an object or callback.
已尝试解决方案
- 承诺 bucket.insert 与 nodejs util.promisify
您可以创建自定义“Promisify”。
例如:
function storeData(data) {
return new Promise((resolve, reject) => {
const id = "5f354b7470e79f7e5b6feb25";
const body = { name: "john doe" };
bucket.insert(id, body, (error, result) => {
if (error) reject(error)
resolve(result)
});
})
}
如何从回调函数中 return 值?
代码
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);
}
},
};
这里我需要 return 值(错误,结果)来自 bucket.insert
回调到函数 createAd
和 return 来自那里的值。
bucket.insert --> createAd
实际应该如何运作
- 当
createAd
函数调用时 createAd
函数应该调用storeData(data)
函数,其中数据存储在 DB- 使用函数
bucket.insert
存储数据后
bucket.insert
回调return值error
和result
storeData
应该 returnbucket.insert
回调值createAd
createAd
return 值应该包含storeData
return 值
bucket.insert
应该包含回调,否则会抛出错误 Third argument needs to be an object or callback.
已尝试解决方案
- 承诺 bucket.insert 与 nodejs util.promisify
您可以创建自定义“Promisify”。
例如:
function storeData(data) {
return new Promise((resolve, reject) => {
const id = "5f354b7470e79f7e5b6feb25";
const body = { name: "john doe" };
bucket.insert(id, body, (error, result) => {
if (error) reject(error)
resolve(result)
});
})
}