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