Javascript 函数在then语句中继续返回Undefined
此函数将只返回未定义的。我已经尝试返回数据,但它不会这样做或返回任何东西,但未定义。不知道为什么会这样。我也尝试过在没有任何控制流的情况下返回数据本身,所以不是这样Javascript 函数在then语句中继续返回Undefined,javascript,fetch,Javascript,Fetch,此函数将只返回未定义的。我已经尝试返回数据,但它不会这样做或返回任何东西,但未定义。不知道为什么会这样。我也尝试过在没有任何控制流的情况下返回数据本身,所以不是这样 function FetchAddressData(_inputAddress) { console.log('FetchEthAddress ran') var url = 'http://api.blockcypher.com/v1/eth/main/addrs/' + _inputAddress; const myReque
function FetchAddressData(_inputAddress) {
console.log('FetchEthAddress ran')
var url = 'http://api.blockcypher.com/v1/eth/main/addrs/' + _inputAddress;
const myRequest = new Request(url, myInit);
updateAddress(result);
fetch(myRequest)
.then(response => response.json())
.then(data => {
ethAddressProcess(data)
if (data.error) {
console.log('oh shit')
//console.log(data.error)
return 0;
} else {
ethAddressProcess(data)
return 1;
}
})
.catch(err => console.log(err))
}
调用
FetchAddressData
函数总是导致未定义
,因为FetchAddressData
中没有任何return
语句。它内部的函数可以,但不是FetchAddressData
本身。有关如何修复此问题,请参见链接问题。(基本上,返回承诺链。)请注意,如果失败,您将返回console.log(),返回unfinedit不是问题所在,但它可能会在某个时候咬到您:您的代码正在成为fetch
API中的猎枪的猎物fetch
不会拒绝HTTP错误,只会拒绝网络错误。因此,如果您的服务器返回404或500或类似值,那么fetch
的承诺就实现了,您将尝试对结果调用json
——但这些类型的响应通常是HTML,而不是json。您必须通过检查响应上的ok
标志或status
属性来检查HTTP成功。我已经写好了。还要注意,在你的函数中处理拒绝并不是最佳实践。相反,只需返回承诺链。让调用者处理拒绝(或将其传递给调用者等)。