如何从包含Promise和.then的函数中返回对象,以及如何在另一个函数中获得返回值



如何从包含Promise的函数返回对象。然后;在另一个函数中,如何从该函数中获取返回值?这是包含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
}
}

我只是无法返回并从该函数中获得返回,其他一切都很好。请帮助

在顶级return new promise的主函数中,并在obj promise被求解时解析它,并将其存储在newVarible中。然后使用promise.all("newVarible"),在任何地方解析promise之后,您都可以获得obj的值。

最新更新