我的页面上有执行各种JavaScript承诺的各种组件。
在任何给定时间,我想知道仍有多少Promise待处理(或者至少在计数为0或> 0时)。
我已经看到Promise.all()
被用作建议,但是这些承诺并不能同时全部兑现,因此不会一次调用Promise.all()
如果可能的话,我也想避免使用jQuery,并探索任何本机ES6解决方案。
答案 0 :(得分:1)
Chrome has queryObjects(Promise)
现在,虽然有点笨拙,但似乎至少可以解决您提出的字面问题:
> queryObjects(Promise)
undefined
Array(2)
扩展它记录的数组以检查每个promise的状态,或右键单击它并选择存储为全局变量以使其Promise.all()
。
我不了解Firefox的类似功能。
答案 1 :(得分:1)
要跟踪特定的一组承诺,可以使用类似以下的小助手:
const promiseTracker = () => ({
count: 0,
get isActive() { return this.count === 0; },
track(p) {
this.count += 1;
p.then(() => this.count -= 1, () => this.count -= 1);
}
});
可以用作:
const networkCalls = promiseTracker();
networkCalls.track(fetch(/*...*/));
//...
console.log(networkCalls.isActive); // ?