Javascript:如何等待一次获取的结果然后启动另一次

时间:2018-01-06 01:26:24

标签: javascript json fetch es6-promise

这段代码肯定是错的,但我不确定如何修复它。

E.g。

fetch('api/foo?get_max=True')
    .then( function(response) {
        return response.json();
    }
    .then( function(response) {
        var max = response["max"];
    }

fetch('api2/bar?max=' + max)
    .then( function(response) {
        return response.json();
    }
    .then( function(mydata) {
        processdata(mydata);
    }

这显然不起作用,因为当第二次提取运行时,最终将在第一次提取中定义的max var尚不存在。我怎样才能"链"或者强制第二次获取"等待"第一次获取?

1 个答案:

答案 0 :(得分:3)

由于fetch()会返回一个承诺,您可以从then()返回该承诺,它会按预期运行:

fetch('api/foo?get_max=True')
.then( response => response.json())
.then( response => {
    var max = response["max"];
    return fetch('api2/bar?max=' + max)
})
.then( response => response.json())
.then( mydata => processdata(mydata))