[js] tableau js pour l'interface de demande de boucle, et placez les données de retour dans le nouveau tableau async wait new Promise((resolve, rejet) interface d'appel en boucle js dans le tableau

Exigence : Utiliser chaque valeur d'un tableau pour parcourir l'interface de requête, obtenir les données correspondantes et les mettre dans un nouveau tableau. Un
exemple peut être mieux compris : l'enseignant veut connaître les notes de chaque élève, et puis il y a un interface qui doit utiliser la pièce d'identité de l'élève pour aller obtenir le score correspondant.
Alors le tableau connu est :

[1, 2, 3, 4] // 同学id数组

Le tableau cible est :

[
	{
    
     id: 1, name: '张三', score: 98 },
	{
    
     id: 2, name: '李四', score: 99 },
	{
    
     id: 3, name: '王五', score: 99 },
	{
    
     id: 4, name: '老六', score: 100 },
]

Solution :
utiliser async, attendre


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({
    
    });
        	})
      	});
    },
}


Résumé :
Pour utiliser async et wait dans une boucle, vous pouvez utiliser la boucle for...of ou for, la boucle while, etc. Vous ne pouvez pas utiliser foreach, car l'exécution de wait dans forEarch sera parallèle.

Je suppose que tu aimes

Origine blog.csdn.net/AAAXiaoApple/article/details/132607136
conseillé
Classement