【发布时间】:2018-11-19 02:31:07
【问题描述】:
我有一个函数,它做两件事需要 I/O 时间,我想第二次返回它,但我希望在这段时间内处理另一件事并快速发送,即使第一件事还没有完成
getuser(x){
let username = getUsernameDB(x.id);//takes time to get data it is an async function
sendMessage(x.id,() => {//send message with callback function when it is recived
sendMessage(username);//must wait for getUsernameFromDatabase
});
}
async getUsernameDB(id){
return await this.dataaccess.getUsernameByUserId(id);//this returns new Promise
}
所以我主要想做出一个承诺,执行其他代码然后在这里等待这个承诺解决然后继续。
【问题讨论】:
-
Wait for promise to resolve and do something else while it does- 是的,promise 就是这样运作的……the thread.join trick现在呢? -
let username = getUsernameDB(x.id);//takes time to get data it is an async function... 所以您想等待getUsernameDB(x.id)完成,然后再将任何内容分配给username.. 对吗?你怎么知道什么时候getUsernameDB完成了?它会返回一个 Promise 吗?需要回调吗?那是什么功能?你写的东西?问题中没有足够的信息来成功帮助您 -
问题已编辑抱歉缺少功能。我想要的是在这里告诉承诺已解决并且用户名有一个值
-
let username = await getUsernameDB(x.id),这将满足您的需求。 -
实际上只会抛出语法错误。
标签: javascript node.js ecmascript-6 promise es6-promise