Ждите обещания, чтобы решить и сделать что-то еще, пока оно делает - PullRequest
0 голосов
/ 09 июня 2018

У меня есть функция, которая делает две вещи, что-то занимает время ввода-вывода, и я хочу вернуть его вторым, но я хочу, чтобы другая вещь обрабатывала в это время и отправляла быстро, даже если первая еще не завершилась

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
}

Итак, я хочу в основном дать обещание, выполнить другой код, затем подождать здесь, чтобы выполнить это обещание, затем продолжить.

1 Ответ

0 голосов
/ 09 июня 2018

. Затем следует ставить после первого вызова sendmessage.Это заставит функцию обещания работать параллельно с sendmessage, а затем дождаться разрешения перед отправкой второго сообщения

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
        username.then((usernameVar) => {
            sendMessage(usernameVar);//usernameVar is carring the value now
    })

    });

}

async getUsernameDB(id){
return await this.dataaccess.getUsernameByUserId(id);//this returns new Promise
}
...