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成功。我已经写好了。还要注意,在你的函数中处理拒绝并不是最佳实践。相反,只需返回承诺链。让调用者处理拒绝(或将其传递给调用者等)。