【发布时间】:2021-08-03 19:23:37
【问题描述】:
我有一个函数,它根据字符串数组输入给我下一个单词,并附加数组:
getNextWordAndAppend(stringArray: string[]) {
// parse
return this.title.getNextWord(word).pipe(
map((result: {}[]) => {
const nextWord = // next word from objectArray
stringArray.push(nextWord ? nextWord.toString() : "")
return stringArray.filter(item => // some filtering logic)
})
)
}
假设我要链接这个函数,并将前一个 observable 的值传递给下一个,创建一个句子:
initialize() {
this.formControl.valueChanges.pipe(
// parse input
concatMap((stringArray: string[]) => this.getNextWordAndAppend(stringArray)),
concatMap((stringArray: string[]) => this.getNextWordAndAppend(stringArray)),
concatMap((stringArray: string[]) => this.getNextWordAndAppend(stringArray)),
// parse output
).subscribe()
}
假设我想动态确定这个最终 observable 的迭代,我该如何创建如下所示的函数?它需要一个 Observable 作为输入,也应该返回一个。
伪代码:
//
.pipe(
// Initial value, Observable to loop, and number of iterations
concatAndPassResult(["Hello", "world"], this.getNextWordAndAppend, 50)
)
concatAndPassResult 会是什么样子? reduce 的东西?
【问题讨论】:
-
所以初始值只追加在.第一次循环?
-
不,第一个函数将接受一个字符串数组,添加一个单词,然后将新数组传递给下一个函数,该函数会将一个单词附加到字符串数组,将其传递给下一个函数等
-
但是从代码中看起来你的 initialValue 来自表单值?
-
正确,第一个用户输入是一个字符串数组,我将它传递给一个可观察对象,这给了我一个新的字符串数组,我需要将它传递给同一个可观察对象,这给了我一个新的字符串数组,我需要将其传递给同一个可观察对象等
标签: javascript loops rxjs refactoring