React - API 调用返回正确结果但未传递

React - API Call returning correct result but not passing along

我正在对 Bing 网络搜索 API 和 运行 执行 API 调用,但响应出错。

代码如下:

await webSearchApiClient.web.search(searchText).then(result => {
    console.log('Results API', result)
    return result

}).catch((err) => {
    throw err;
})

我 运行 遇到的问题是结果确实返回了(控制台日志 'Results API' 打印了预期的 return 值),但是 return语句没有传递值。其余代码被编写成异步的,当我打印调用 API 函数的代码中的值时,我得到:

Line 1: Results API {"_type": "SearchResponse","queryContext": {"originalQuery":...
Line 2: Returned Results undefined

我尝试将 result 设置为其他变量但没有成功

我也在使用 redux,这里是调度调用的代码和 redux 操作中的代码(第二个控制台日志是 redux 操作):

const onSearchResults = async () => {   
    dispatch(getWebResults(searchText))
    dispatch(getImageResults(searchText))
}
export const getWebResults = (searchText) => {
    return async dispatch => {
        const onStart = () => {
            dispatch({ type: GET_WEB_RESULTS_STARTED });
        }
        const onSuccess = (response) => {
            dispatch({ type: GET_WEB_RESULTS_SUCCESS, payload: response });
            return response;
        }
        const onError = (error) => {
            dispatch({ type: GET_WEB_RESULTS_FAILURE, payload: error });
            return error;
        }

        try {
            onStart();
            const webResults = await BingWebSearchApi(searchText);
            console.log('Returned Results', webResults)
            return onSuccess(webResults)
        } catch(error) {
            return onError(error)
        }
    }
}

而不是这样做

await webSearchApiClient.web.search(searchText).then(result => {
    console.log('Results API', result)
    return result

}).catch((err) => {
    throw err;
})

因为 return 语句是针对 then 函数作用域的,所以你应该 return 这样的承诺

return webSearchApiClient.web.search(searchText);

然后在你的 redux 动作中做类似

的事情
(...)

try {
  onStart();
  BingWebSearchApi(searchText).then((webResults)=> {
    console.log('Returned Results', webResults);
    onSuccess(webResults);
  });
} catch(error) {
  return onError(error)
}