0
結果を待つ必要のない非クリティカルな非同期タスクを実行する必要があるNode.js/Expressアプリケーションがあります(たとえば、分析プラットフォームでのデータ):結果を待たずに非同期タスク
router.post("/", function (req, res, next) {
criticalTask()
.then(result => {
res.json({success: true});
nonCriticalTask();
})
.catch(next)
}
はnonCriticalTask()
が途中でそれを終了させることなく、完全に実行されることを保証はありますか?これに何か制限はありますか?
'nonCriticalTask()'に例外やエラーが発生した場合、それは途中で終了します。それを処理する必要があります。しかし、あなたが尋ねたことはホールドです。結果が他のタスクを実行するのを待っているわけではありません。 'nonCriticalTask'の中の何かが非同期なら、あなたは利点があります。 – RaR
私はあなたがそれを終わらせると思いますか、それがなぜ呼び出されないかもしれないと思うのか、それがなぜ完了しないのかを詳しく説明できますか分かりません。 – nycynik
私たちの場合、特に 'nonCriticalTask'は、外部サービスへのHTTP POSTリクエストの作成を含み、完全なPOSTデータを送信することなく(TCP/IPセッションがこの外部サービスプロバイダのログごとに)途中で終了することがありました、それが問題ならザピアです)。サーバーのログに何か間違っていたことは示されませんでした。 'nonCriticalTask'の結果を待っていたら、問題はなくなりました。だから、私は期待されている動作について何らかのドキュメンテーションを見つけようとしています。 – Anton