javascript - 如何从包含 Promise 和 .then 的函数返回对象,以及如何在另一个函数中获取返回值?
问题描述
如何从包含Promise和.then的函数返回对象;以及如何在另一个函数中从该函数获取返回值?这是包含 Promise 的函数,我要返回的对象是obj:
function searchdb(user, key){
var ok;
const list = new Promise(function (resolve, reject) {
MongoClient.connect(uri, function(err, db) {
var dbc = db.db("chat");
dbc.collection("chat_messages").find({$or: [ {user1: key, user2: user}, {user1: user, user2: key} ]}).toArray(function (err, result){
if(err) {
reject(err);
} else {
resolve(result);
}
if(result[0].user1 == key){
ok = 1;
}
else{
ok = 2;
}
});
db.close();
});
});
var obj = {};
list.then(result => {
if (ok == 1){
obj[result[0].user1] = result[0].user2_seen;
}else{
obj[result[0].user2] =result[0].user1_seen;
}
console.log(obj); <--------------- here its working
}).catch(err => console.log(err.message));
return obj;
}
这是我想要获得回报的函数:
function get(data){
suser = data[0]
obj = data[1];
for (var i in obj){
var key = Object.keys(obj[i])[0];
var a = searchdb(suser, key);
console.log(a); <-------------- here its not working
}
}
我只是无法返回并从该函数中获得返回,其他一切正常。请帮忙
解决方案
在顶层的 main 函数中,return new promise
并在解决 obj 承诺时解决它并将其存储在newVarible
. 然后使用promise.all("newVarible")
之后,您将能够在任何地方解决承诺后获取 obj 的值。
推荐阅读
- reactjs - 无法从客户端的 axios 响应中解析承诺
- gcc - ld 失败,因为 libselinux 未定义对 gettid@GLIBC_2.30 的引用
- python - SMOTE 用于平衡数据
- compression - 压缩 60 位字符串的最佳方法
- linux-mint - Linux-Mint-20 的协同作用
- javascript - 我如何将数据从屏幕上传递到 React Native 中的另一个?
- flutter - 解决异常:在 null 上调用了 getter 'iterator'
- r - 使用 echarts4r 测量颜色
- sql - 如何删除 varbinary 字符串中的前两个字符
- php - PHP 正则表达式匹配并在每个匹配中包含组(完全匹配)