私は約束事に包まれた一連の操作を保存した状況があります。ここで、リクエストがAPIにヒットするたびに、この操作が実行されます。bluebirdで充実した約束を果たさない方法
のは、私が実行しているサービスのステータスを取得するための操作の束を作成したとしましょう:要求は、それが状況をフェッチし、それをものに履行値を設定し、1回目のためのAPIハンドラをヒットすると
const jobs = [];
function statusRequest (url) {
return new Promise((resolve, reject) {
request(url, function(error, resp, body) {
if (error) {
return reject(error);
}
resolve(body);
});
});
}
services.forEach(url => {
jobs.push(statusRequest(url));
});
function handler (request, reply) {
Promise.all(jobs).then(results => {
// handle results
})
.catch(error => reply(error).code(500))
}
module.exports = {
'auth' : false,
'description' : 'Get the status of all the services',
'tags' : [ 'api', 'system', 'status' ],
handler
};
を結果(キャッシュされた)。 APIへの後続のリクエストには、最初のフルフィルメント値が返されます。
約束事を満たされていない状態にリセットする方法はありますか?各呼び出しはすでに作成された操作を実行するだけですか?
1.いいえ、それは明らかなXYの問題です:あなたがしようとしていることを説明して、それをやろうとするのではなく、あなたが望むことができないコードを見せてください。 – Amit
あなたがDDDから聞いたことを英語に翻訳します。 「私は何かが起こることを望むたびに仕事をしたくないが、そのことが起こることを望む」オペレーションは、実行されている作業のメタファです。 「約束」の成就は、その作品の「完成」です。 – Aron
技術的には可能ですが(JSでは何でも可能です)。可能な限り最悪の考えです。それは論理的、文法的または意匠的な意味を持たないからです。次の開発者があなたのコードを操作することを約束します。「彼はあなたを探し、彼はあなたを見つけ、彼はあなたを殺します。 – Aron