【发布时间】:2018-06-30 00:11:26
【问题描述】:
根据doc:
我们从生成器中生成纯 JavaScript 对象。我们称这些为对象效果。
它似乎是一个 JavaScript 对象,例如像这样:
// Effect -> call the function Api.fetch with `./products` as argument
{
CALL: {
fn: Api.fetch,
args: ['./products']
}
}
这似乎是effect creators 之一的结果。
但是all([...effects]) 的文档看起来像接受的参数是效果,同时all() 函数也接受承诺和生成器。
import { all, call } from 'redux-saga/effects'
const callEffect = call(console.log, 'foo')
function* gen() {
console.log('bar')
}
const promise = new Promise(resolve => {
console.log('baz')
resolve()
})
function* print() {
yield all([ callEffect, gen(), promise])
}
调用print() saga 将导致打印foo、bar 和baz。
究竟什么是效果? all([...effects])函数的参数是什么类型的数组?
【问题讨论】:
-
当谈到 redux-saga 中的效果时,您可以指效果对象或 redux-saga 协程可以处理的任何东西。虽然通常我认为人们会指的是前者。我认为“数组”的类型只能通过“作者决定支持的内容”来描述,这可以在 redux-saga api 参考中找到。如果您有兴趣更深入地了解编程中的效果,我建议您观看youtube.com/watch?v=z8SI7WBtlcA。
标签: redux-saga