[js] js-Array für Schleifenanforderungsschnittstelle, und fügen Sie die zurückgegebenen Daten in ein neues asynchrones Array ein

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.

おすすめ

転載: blog.csdn.net/AAAXiaoApple/article/details/132607136