【发布时间】:2018-06-03 03:41:13
【问题描述】:
使用 redux-saga 的 yield all([]) 比使用 ES6 的内置 yield [] 有什么优势吗?
要并行运行多个操作,redux-saga 建议:
const result = yield all([
call(fetchData),
put(FETCH_DATA_STARTED),
]);
但是不使用all() 方法也可以实现同样的效果:
const result = yield [
call(fetchData),
put(FETCH_DATA_STARTED),
];
哪个更好,为什么?
【问题讨论】:
-
documentation 的说法,与
Promise.all([...])和Promise.resolve([...])的区别基本相同 -
他们在做同样的事情——生成任务并等待所有任务完成。顺便说一句,生成数组不是特定的 ES6 特性,而是
redux-saga的事情。 -
事实上两者都没有内置到 ES6 中。如果你使用生成器函数,redux-saga 会处理所有的值。
标签: javascript ecmascript-6 yield redux-saga