我有问题。当我运行程序时,它没有以正确的顺序运行。
因此通常,我的console.log必须显示1 2 3 4 3次。 但是所有console.log(1)在一开始就完成了。所以看起来像: 1,1,1,1,2,3,4,2,2,3,4,2,3,4
第一个http请求给了我一系列不同的数据。对于此数据的每个元素,我想在另一个函数two()中进行处理。使用第二个功能,我可以从另一个http请求中恢复其他数据。
我已经在Internet上进行了检查,因此我使用了异步并等待,但它不起作用。
能帮我一下吗:)
one(){
return new Promise((resolve,reject) => {
this.http.get(this.url1, {responseType: 'text'})
.subscribe(
(data) => {
var i = 1;
JSON.parse(data).results.forEach(async element => {
console.log("1");
await this.two(i).then((value:[]) => {
console.log("3");
otherfunction(value);
});
i++;
console.log("4")
});
resolve(this.list);
},
err => {
console.log("err : " + err.message);
reject([]);
}
)
});
}
two(id){
var url2 = "myurl/" + id;
return new Promise((resolve,reject) => {
this.http.get(url2, {responseType: 'text'})
.subscribe(
(data) => {
var types = [];
JSON.parse(data).types.forEach(element => {
types.push(element.type.name);
});
console.log("2");
resolve(types);
},
err => {
console.log("err : " + err.message);
reject();
}
)
});
}