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)
}
我正在对 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)
}