gpt4 book ai didi

javascript - yield [] 和 yield all() 的区别 - ES6/redux-saga

转载 作者:数据小太阳 更新时间:2023-10-29 04:35:58 25 4
gpt4 key购买 nike

ES6 的内置 yield [] 相比,使用 redux-saga 的 yield all([]) 有什么优势吗?

要并行运行多个操作,redux-saga 建议:

const result = yield all([
call(fetchData),
put(FETCH_DATA_STARTED),
]);

但是不用 ​​all() 方法也可以完成同样的事情:

const result = yield [
call(fetchData),
put(FETCH_DATA_STARTED),
];

哪个更好,为什么?

最佳答案

没有功能差异,正如 Mateusz Burzyński(redux-saga 维护者)解释的那样 here :

Under the hood they are both the same, yield [...effects] will result in a deprecation warning though and inform you about all.

This was introduced to make parallel behaviour explicit and it nicely mirrors Promise.all

最好使用 all(),因为它告诉读者我们在这里产生了不止一种效果,但是没有它,yield 的各种用途仍然有效:

产生具有多重效果的对象

const { company, profile } = yield {
company: select(getCompany),
profile: select(getUserProfile, userId),
};

产生数组文字

yield [
put(userRequestSucceeded(userId)),
put(userReceived(response.data)),
];

使用 map 生成数组

yield userIds.map(userId => call(fetchUserDetails, userId));

关于javascript - yield [] 和 yield all() 的区别 - ES6/redux-saga,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47908405/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com