我有两个变量需要传递给一个返回一个observable的函数,而从订阅返回的值需要作为另一个函数的两个参数传递。
我现在有这样的工作:
...
let headlineDone = false;
let paragraphDone = false;
convert(headline).subscribe( function(convertedHeadline) {
headline = convertedHeadline;
headlineDone = true;
if (paragraphDone) {
doSomethingWithThese(headline, paragraph);
}
});
convert(paragraph).subscribe( function(convertedParagraph) {
paragraph = convertedParagraph;
paragraphDone = true;
if (headlineDone) {
doSomethingWithThese(headline, paragraph);
}
});
...
这可以通过运行这两个函数并且只调用doSomethingWithThese
函数来完成另一个函数(它们都已完成),但我觉得应该有更简洁的方法来合并或类似的东西,但我还没有找到一种方法可以让我像这样访问一个函数调用的两个值。
答案 0 :(得分:2)
要获得类似的行为,请使用 combineLatest :
Observable.combineLatest(
convert(headline),
convert(paragraph)
)
.subscribe(([convertedHeadline, convertedParagraph]) =>
doSomethingWithThese(convertedHeadline, convertedParagraph)
);