【发布时间】:2020-01-12 16:33:59
【问题描述】:
我读过Invoking Multiple Services 部分,它说一个可以调用多个承诺,但在我自己的测试中,它们看起来被调用而不等待前一个完成
// ...
invoke: [
{ id: 'service1', src: 'someService' },
{ id: 'service2', src: 'someService' },
{ id: 'logService', src: 'logService' }
],
// ...
Here 也是创建中间状态的解决方法
states: {
first: {
invoke: {
src: 'one',
onDone: {
target: 'second',
}
}
},
second: {
invoke: {
src: 'two',
onDone: {
target: 'success',
}
}
},
success: {
type: 'final'
}
}
有没有办法像Promise.each 这样使用调用进行链接,使调用([])可能串行运行?
我只能看到两个选项:
- 中间状态
- 调用一个本身进行链接的承诺。
【问题讨论】:
-
是的,这两个似乎是您的选择。他们怎么了?当然,您甚至可以编写一个简单的函数,自动从一组服务中生成中间状态。
-
好吧,invoke
SingleOrArray界面看起来非常漂亮并且放在一起,似乎是一种很好的链接方式,并且非常清楚正在发生的事情。但它不是,因为是并行的,似乎没有办法告诉其他人,我试图找到的是类似 redux-saga 效果的东西,put 或call例如,但在 xstate 上下文中,调用不同的服务,并且能够随着应用程序的增长将它们组合起来,而无需创建中间函数。 -
那么promise链和内部机器的问题是你不能调用外部机器中定义的服务?在这种情况下,您可能应该在库的 repo 上发布功能请求。
标签: javascript reactjs typescript xstate