【问题标题】:React Native - Unhandlled Promise Rejection - where to catch the error?React Native - 未处理的承诺拒绝 - 在哪里捕获错误?
【发布时间】:2020-05-16 19:30:29
【问题描述】:

我在我的 react 本机应用程序中收到“可能未处理的承诺拒绝”警告。 我理解它,因为我根本没有发现错误,但我只是不知道在我的函数中在哪里执行它:

return async dispatch => {
        const response = await fetch(url);

        const resData = await response.json();
        const pastResults = resData.past;
        const nextResults = resData.next;
        const lastResult = resData.last;

        const loadedResults = [];
        for (let r = 0; r < 11; r++){
            loadedResults.push(
                new FakeResult(
                  r,
                  pastResults[r].drawingDate.substring(0,10),
                  pastResults[r].nr,
                  pastResults[r].numbers
                )
              );
        }

        dispatch({type: SET_RESULTS, results: loadedResults, next: nextResults, last: lastResult});
    };

非常感谢您的帮助!

【问题讨论】:

    标签: javascript reactjs react-native fetch


    【解决方案1】:

    try/catch 周围的 await 语句(或任何可能返回被拒绝承诺的语句

    return async dispatch => {
        try {
            const response = await fetch(url);
            const resData = await response.json();
        } catch(err) {
          // do something with err or ignore(?)
        }
    
        const pastResults = resData.past;
        const nextResults = resData.next;
        const lastResult = resData.last;
    
        const loadedResults = [];
        for (let r = 0; r < 11; r++){
            loadedResults.push(
                new FakeResult(
                  r,
                  pastResults[r].drawingDate.substring(0,10),
                  pastResults[r].nr,
                  pastResults[r].numbers
                )
              );
        }
    
        dispatch({type: SET_RESULTS, results: loadedResults, next: nextResults, last: lastResult});
    };
    

    注意:fetch 只返回一个拒绝的承诺,用于网络故障,而不是错误响应。

    【讨论】:

    • 嗨,德鲁,感谢您抽出宝贵时间提供帮助。我不得不在 TRY 括号内获取所有其余的代码,但是是的!有效。非常感谢
    • @AlejandroMorales 太棒了!如果您觉得这有帮助,请点赞或接受。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 2016-12-15
    • 2018-10-27
    • 2017-12-20
    • 1970-01-01
    • 2020-10-28
    相关资源
    最近更新 更多