Anforderung: Verwenden Sie jeden Wert in einem Array, um die Anforderungsschnittstelle zu durchlaufen, die entsprechenden Daten abzurufen und in ein neues Array einzufügen. Ein
Beispiel ist vielleicht besser zu verstehen: Der Lehrer möchte die Noten jedes Schülers wissen, und dann gibt es eine Schnittstelle, die den Studentenausweis verwenden muss. Holen Sie sich die entsprechende Punktzahl.
Dann ist das bekannte Array:
[1, 2, 3, 4] // 同学id数组
Das Zielarray ist:
[
{
id: 1, name: '张三', score: 98 },
{
id: 2, name: '李四', score: 99 },
{
id: 3, name: '王五', score: 99 },
{
id: 4, name: '老六', score: 100 },
]
Lösung:
Async verwenden, warten
methods: {
async handleGoods(arr) {
let idArr = [1, 2, 3, 4];
let scoreArr = [];
for (let i = 0; i < idArr.length; i++) {
let data = await this.getScore(i);
scoreArr.push({
id: idArr[i],
name: data.name,
score: data.score,
})
}
if(scoreArr.length == idArr.length){
console.log('出循环结束了');
}
},
async getScore(id) {
return await new Promise((resolve, reject) => {
// 请求接口
getScore({
id: id,
}).then(res => {
resolve(res.data);
}).catch(() => {
reject({
});
})
});
},
}
Zusammenfassung:
Um „async“ und „await“ in einer Schleife zu verwenden, können Sie „for...of“ oder „for“-Schleife, „while“-Schleife usw. verwenden. Sie können „foreach“ nicht verwenden, da die Ausführung von „await“ in „forEarch“ parallel erfolgt.