我有Array,其中类Instruction有一个execute()函数,它返回一个Observable。 execute函数将执行异步任务,当它完成时,它将调用myObserver.complete(),它应触发列表中的下一条指令以调用其execute()函数。我不知道该怎么做。
我正在实施所有这些,所以我愿意接受任何建议,包括改变我设置我的教学课程的方式。主要目标是我需要按顺序运行每个指令异步执行方法中的代码。当指令执行完毕后,继续执行列表中的下一个指令,直到执行完所有操作。
目前我通过递归执行此操作,其中传递指令列表,然后传入我当前正在处理的指令的索引。完成后,我将索引递增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)