0
對於承諾&協程序,我已經在NodeJs中使用了藍鳥npm包。當協議被多次解析並且協同程序有下一個收益時,協同程序將如何表現
有人可以幫助理解下面的代碼,當承諾多次解決時的行爲。
問:
什麼會發生在承諾解決的多次協同程序?
第二個收益率是否會受到第一個收益率的影響。
const bluebird = require(「bluebird」);
function func1() { return new bluebird((resolve, reject) => { let c = 0; let iterval = SetInterval(() => { c++; let cc = c; console.log(`c=${c}`); if(cc === 20) { clearInterval(interval); } resolve(true); }, 1000); }); } let run1 = bluebird.coroutine(function*() { try { yield func1(); yield func1(); yield func1(); yield func1(); } catch (e) { console.dir(e); } });
感謝您的回覆。第一次解決承諾後,協同例程將移至下一行執行,然後解決方案不會有任何影響或內存泄漏? – dearvivekkumar
簡短的回答,是的。協程不會保留對承諾的引用,只是在每個承諾產生時調用當時的方法。你不應該保留一個不斷增長的,永久性的承諾對象列表或他們的解析/拒絕功能,而不是保留這樣的列表 - 這是一個內存泄漏的另一個名字。 – traktor53