Angular-等待函数,然后继续执行?

时间:2019-09-13 10:19:23

标签: angular typescript

我有一个类似于以下的角度函数。有一个循环,每次我执行一个POST请求并将respose合并到一个变量中:

async loop(jsonData){
    var text: any;
    for(var i=0; i<jsonData.Hoja1.length; i++){
        var id = jsonData.Hoja1[i].id.toString();
        var codigo = Number(jsonData.Hoja1[i].codigo).toString();
        var featureRequest = new WFS().writeGetFeature();
        fetch('http://localhost:3000/inspire', {
            method: 'POST',
            body: new XMLSerializer().serializeToString(featureRequest)
        }).then((response) => {
            return response.json();
        }).then((json) => {
            var features = new GeoJSON().readFeatures(json);
            if(features[0]){
                var format = new WKT();
                var wktRepresenation  = format.writeGeometry(features[0].getGeometry());
                var consulta = "UPDATE " + wktRepresenation + ";";
                text = text + consulta;
            }
        });
    }
    return text;
}

我正在尝试打印函数结果,但它返回一个undefined值。

this.loop(jsonData).then( res => {console.log(res)});

似乎.then不会等到loop函数结束执行,或者我在loop函数内部做错了什么(也许是POST调用?)

请指导我,我对同步非常了解。如何获得正确的值?谢谢。

1 个答案:

答案 0 :(得分:1)

在获取前先写awaitawait fetch('http://localhost:3000/inspire', ... 因为您必须在每次循环中等待完成的提取。