如何使用TypeScript和RxJ串行执行一系列指令?

时间:2016-05-16 20:51:16

标签: javascript rxjs

我有Array,其中类Instruction有一个execute()函数,它返回一个Observable。 execute函数将执行异步任务,当它完成时,它将调用myObserver.complete(),它应触发列表中的下一条指令以调用其execute()函数。我不知道该怎么做。

我正在实施所有这些,所以我愿意接受任何建议,包括改变我设置我的教学课程的方式。主要目标是我需要按顺序运行每个指令异步执行方法中的代码。当指令执行完毕后,继续执行列表中的下一个指令,直到执行完所有操作。

目前我通过递归执行此操作,其中传递指令列表,然后传入我当前正在处理的指令的索引。完成后,我将索引递增1并再次调用自身。虽然这有效,但必须有一个更好的方法,但我还没有提出一个。想法?

1 个答案:

答案 0 :(得分:2)

如果我理解得很好,你可以试试:

execute

这是否符合您的使用案例?这假定您的concatMap函数在每个项目上。 executeInstruction将订阅Observable.from(instructions, (instruction) => { return instruction; }).concatMap((instruction) => { return instruction.execute(); }); 返回的每个observable,并且只有在前一个observable完成时才会订阅与下一个项目相对应的下一个observable。文档here

更新:Typescript方式:

import numpy_indexed as npi
rowsa = np.indices(a.shape)[0]
rowsb = np.indices(b.shape)[0]
# test for each value-rowidx pair in b if it is contained in a
c = npi.contains((a.flatten(), rowsa.flatten()), (b.flatten(), rowsb.flatten()))
# check that all elements on a row are contained
row_is_subset = c.reshape(b.shape).all(axis=1)