我有一種情況,我存儲了一個包裹在承諾中的操作數組。現在,每次請求命中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處理器爲它取的地位,並將其設置履約價值於第一時間結果(緩存)。向API取得成功請求將返回第一個履行價值。
有沒有辦法重置未實現的承諾,以便每次調用只執行已創建的操作?
1. No. 2.這是一個明顯的XY問題:解釋你正在做的事,而不是你如何去做,並顯示你的代碼不能做你想做的事。 – Amit
讓我們將您從DDD詢問的內容翻譯成英文。 「每次我想要發生什麼事情時,我都不想工作,但我希望發生這種事情。」操作是對正在完成的工作的隱喻。 「承諾」的履行是該作品的「完成」。 – Aron
雖然它在技術上是可能的(JS中任何可能的東西)。這是可能做到的最糟糕的主意。因爲它不符合邏輯,語法或設計意義。我向你保證,下一個開發人員將處理你的代碼「他會找你,他會找到你的,他會殺了你的」。 – Aron