【问题标题】:How to make successive api calls in redux saga from an array not knowing it's size?如何在不知道其大小的数组中在 redux saga 中进行连续的 api 调用?
【发布时间】:2020-12-21 16:54:13
【问题描述】:

我想要做的是从一个数组中连续上传多个文件并将它们的响应保存在一个数组中:

function* uploadTransactionFilesWorker({ payload: { onFail, onSuccess, data } }) {
  try {
       const { transactions } = data;

       const finalData = yield transactions.map(item => {
            const formData = new FormData();
            formData.append("file", item.document[0], item.document[0].name);
            call(uploadFile(formDataA));
        });

          onSuccess(finalData);
      } catch (e) {
          onFail(e);
      }
 }

但这似乎不起作用。有人可以解释一下吗?

【问题讨论】:

    标签: javascript reactjs redux react-redux redux-saga


    【解决方案1】:

    我之前没有用yield 测试.map,但是通过查看您的用例,我认为我们可以轻松地使用while 循环和yield 让异步代码以同步语法工作

    基本思路

    let array = [ .... ]
    
    let i = 0;
    
    while( i < array.length ){
      try{
    
        yield call(upoadFile(...));
        yield put(onSuccess());
    
      } catch(e){
    
        yield put(onFail());
      }
    
      i++;
    }
    

    【讨论】:

      猜你喜欢
      • 2021-11-21
      • 2019-07-01
      • 2016-12-14
      • 2021-07-29
      • 2017-09-12
      • 2018-03-16
      • 2018-08-18
      • 2016-12-12
      • 1970-01-01
      相关资源
      最近更新 更多