【问题标题】:Delete action success message删除操作成功消息
【发布时间】:2017-10-31 18:16:26
【问题描述】:

我在删除项目时执行了删除操作。现在,每当删除一个项目时,我都会在屏幕上收到一条消息。 当我选择要删除的多个项目时,我会收到一堆消息。例如,如果我删除 3 个项目,则会显示“视频已成功删除”的消息。在屏幕上出现 3 次。如何根据成功响应将所有消息归为一个,并显示“3 个视频已成功删除”之类的内容。以及另一条显示“无法删除 2 个视频”的消息?使用下面的代码,它会显示成功或错误结果,但不能同时显示两者。该错误不计算失败的次数。这是我所拥有的:

export function idsToDelete (ids) {
return dispatch => {
    const promises = ids.map(id => api.delete(dispatch, id));
    dispatch({
      type: DELETE,
      promise: Promise.all(promises).then((results) => {
        console.log(results.size +"Video deleted.");
       }, error => {
          if(error.type) {
           console.log("video could not be deleted.");
        } else {
          return Promise.reject();
        }
      })
    });
  };

}

【问题讨论】:

    标签: javascript react-redux immutable.js


    【解决方案1】:

    您可以将所有承诺映射到数组中,然后将Promise.all() 作为承诺传递:

    const deletePromises = ids.map(id => api.delete(dispatch, id))
    dispatch({
      type: DELETE_MANY,
      ids,
      promise: Promise.all(deletePromises)
        .then((results) => {
          // Show the success message only if delete was successful.
          console.log("Videos deleted successfully.");
        }, error => {
            return Promise.reject();
          }
        })
    })
    

    【讨论】:

    • 我尝试了您的解决方案。面对一些问题,更新了我上面的代码。请让我知道出了什么问题。
    • 您面临什么问题?
    • 使用上面的代码,它会显示成功或错误结果,但不能同时显示。错误不计算失败的次数。
    • @Mustang 在这种情况下,您可以在Promise.all 中捕获错误并在results 中查找它们。例如像这样的地图承诺ids.map(id => api.delete(dispatch, id).catch(err => ({ err })))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多