[js] matriz js para la interfaz de solicitud de bucle y coloque los datos devueltos en la nueva matriz async await new Promise((resolver, rechazar) interfaz de llamada de bucle js en la matriz

Requisito: use cada valor en una matriz para recorrer la interfaz de solicitud, obtener los datos correspondientes y colocarlos en una nueva matriz. Un
ejemplo puede entenderse mejor: el maestro quiere saber las calificaciones de cada estudiante, y luego hay un Interfaz que necesita usar la identificación del estudiante para obtener la puntuación correspondiente.
Entonces, la matriz conocida es:

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

La matriz objetivo es:

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

Solución:
use async, espere


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


Resumen:
Para usar async y await en un bucle, puede usar for...of o for, while, etc. No puede usar foreach, porque la ejecución de await en forEarch será paralela.

Supongo que te gusta

Origin blog.csdn.net/AAAXiaoApple/article/details/132607136
Recomendado
Clasificación