javascript - 返回值是未定义的。可以告诉我应该怎么做才能修复它?
问题描述
store 的值是 undefined.colud 告诉我我做错了什么。我应该使用 Async 和 await 还是 Promise ?
var store = db.read(collectionName, (status, data) => {
//database read function
if (status) {
names.listOfData = data;
var send = names;
console.log("send---->", send); // send value here is what I need to return.
return send; // Getting required data for send. Problem here is returning it and storing it in store.
} else {
return null;
}
});
console.log("store-->", store);
这里 store 的值是未定义的。没有适当的回报
解决方案
您不能将结果写入存储并在之后立即看到它,db.read
因为db.read
不会等待回调完成并且不会从其中返回数据作为返回值。
您应该将此调用包装到new Promise
. 它可能看起来像这样:
var store = await (new Promise(resolve, reject) => {
db.read(collectionName, (status, data) => {
//database read function
if (status) {
names.listOfData = data;
var send = names;
console.log("send---->", send); // send value here is what I need to return.
resolve(send);
} else {
resolve(null);
}
});
});
请阅读有关异步函数的更多信息async/await
,Promise
以及如何将带有回调的函数转换为异步函数。
推荐阅读
- testing - 带有gorm INSERT的sqlmock
- windows-10 - 在 LaTeX 构建上覆盖旧 PDF (Sublime 3)
- java - 调用方法时的异常处理
- swift - Swift - 使用枚举映射 UISegmentedControl
- c# - 为 Kentico 对象生成类
- javascript - .eslintrc.js 键带有“-”(破折号)
- amazon-ec2 - GPU 利用率如何在神经网络训练的背景下发挥作用?
- android - 带有 createChooser 的 startActivity 不显示选择器但立即启动
- sql - Rails has_many through - 如何为连接表指定键列?
- sql-order-by - Drupal 8 SQL语句,避免addOrder通过在SELECT中添加一些字段