Как отправить 1 файл за раз?Подождите, затем Отправить Далее - Mobx / Axios - PullRequest
0 голосов
/ 05 октября 2018

У меня есть несколько изображений, которые пользователь загружает, как только они нажимают кнопку загрузки, я хочу начать загружать каждое изображение, сначала я хочу начать с одного за раз и, возможно, попробовать по 5 штук за раз.

  @action
   uploadAllFiles = async () => {
    for (let i = 0; i < this.files.length; i++) {
         runInAction(async () => {
            const file = this.files[i];
            file.uploading = true;
             var data = new FormData();
            data.append('folderName', '4141515');
            data.append('file', file.fileObject);
            await axiosGenericInstance.post('/Images', data);
            this.files.remove(file);
         });
    }
  };

но я получаю

Так как строгий режим включен, изменение наблюдаемых наблюдаемых значений вне действий не допускается.Пожалуйста, оберните код в action, если это изменение предназначено.Пытался изменить:

Так что я не правильно делаю.

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Я думаю, что вы должны await runInAction

for (let i = 0; i < this.files.length; i++) {
    // first write await      
    await  runInAction(async () => {
        const file = this.files[i];
        file.uploading = true;
        var data = new FormData();
        data.append('folderName', '4141515');
        data.append('file', file.fileObject);
        await axiosGenericInstance.post('/Images', data);
        this.files.remove(file);
    });
}
0 голосов
/ 05 октября 2018

Я сделал это так:

export function getDetails(n, dataArray) {
return async(dispatch) => {
  for(let i = 0; i < n; i++){
      myService.getDetails(dataArray['x'][i]['y'])
        .then(res => {
          let item = dataArray['x'][i]['y']
          dispatch({type: types.DETAILS_GRAPH, item, i, res});
          })
        .catch(error => {
          dispatch({type: types.SET_ERROR, error});      
        });
  }
 //sleep(1) here if time needed between 2 calls
 };
}

Надеюсь, это поможет.

...