約束を返す関数があります。この関数では、サードパーティベンダーを呼び出して、サーバーを介してプッシュ通知を送信します。
それはのように見えます
apiGetLoggedInUser.then(
user => {
return sendMessage(user.name);
}
)
ただし、実際にこのsendMessage関数を呼び出す前に、3秒間待機することにしました。ただし、sendMessageは提供されているため、変更しないことをお勧めします。
「同期」操作を削除するためにpromiseが使用されているため、このシナリオで実際に「待機」部分を実行する方法を知りたいと思います。
私は正しく理解していますか?何をすればよいでしょうか?
次の約束を遅らせる別の約束をチェーンに挿入します。
apiGetLoggedInUser
.then(user => {
return new Promise(resolve => setTimeout(() => resolve(user), 3000));
})
.then(user => sendMessage(user.name))
別のアプローチ-多くの場所でこの種のことをしたい場合に便利です
このビットは一度行われます
Promise.prototype.thenWait = function thenWait(time) {
return this.then(result => new Promise(resolve => setTimeout(resolve, time, result)));
};
次に、この例の使用法のように、どこでも使用できます
apiGetLoggedInUser.thenWait(3000).then(user => sendMessage(user.name));
タイムアウト後にsendMessage
を呼び出す新しいpromiseを作成します。
apiGetLoggedInUser.then(
user => {
return new Promise((resolve, reject) => {
setTimeout(() => {
sendMessage(user.name).then(resolve, reject);
}, 3000)
});
}
)