gpt4 book ai didi

javascript - 等待一组可观察的订阅函数完成

转载 作者:行者123 更新时间:2023-12-03 05:14:25 26 4
gpt4 key购买 nike

我想使用返回可观察值的对象方法来转换和替换数组中的所有单词。我正在使用基于 this answer 的绑定(bind)传递正确的值。

当所有订阅完成后,我想调用另一个名为 task2() 的函数。我该如何实现这个?

for(let word in this.words){
var i = Object.keys(this.words).indexOf(word);

this.convertor.get(this.words[i].value).subscribe( function (i, result) {
this.words[i].value = result;
}.bind(this, i));
}

//task2() <--------- when all subscribe functions finished

最佳答案

this.words 是什么类型?如果它是一个数组,那么循环它们的项目会更容易......你在那里做了一些非常奇怪的事情......

此外,请考虑使用箭头函数以避免在任何地方使用 bind(this)。它有助于读出代码。

您应该使用forkJoin重写代码:

let streams = [];
for(let i = 0; i<this.words.length; i++){
streams.push(this.convertor.get(this.words[i].value));
}

Rx.Observable.forkJoin(streams).subscribe((result) => {
// Here result is an array with the results, and it's sorted properly (The first result is from the first stream, and so on).
for(let i=0; i<result.length; i++) {
this.words[i].value = result[i];
}

task2();
});

关于javascript - 等待一组可观察的订阅函数完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41665415/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com