如何等待所有的ajax操作都执行完代码再接着执行?

奔跑小子 发布于 09/12 08:02
阅读 276
收藏 1

我的js代码中有好几个ajax操作,我需要他们都执行完了,代码才接着往下执行,有什么比较好的方法能实现?

加载中
1
KevinBlandy
KevinBlandy

ES6的 Promise.all    可以解决。

/**
 * 构建出多个异步请求(每个异步请求都应该是一个Promise对象)
 */
const promises = ['请求1', '请求2', '请求3', '请求4'].map(function (name) {
	let requestBody = new URLSearchParams();
	requestBody.set('name', name);
	console.log(`${name} 开始异步执行`);
	return fetch('/action', {
		method: 'POST',
		body: requestBody
	});
});

/**
 * 使用 Promise.all() 来处理所有的异步请求。当所有的请求都执行完毕后,会调用 then 方法
 */
Promise.all(promises).then((results) => {
	console.log('所有请求都执行完毕了');
	for (let response of results){
		response.json().then(message => {
			console.log(message);
		});
	}
});

 

0
_全村人的希望
_全村人的希望

异步:否   ( async:false )

0
vikon
vikon

Promise.all ?

0
realanan
realanan

设置一个计数,调用ajax前+1,ajax完成后-1,计数到0时继续执行下面的代码

0
_吟游诗人
_吟游诗人

es6的async-await了解一下,可以等待异步请求执行完毕再执行后续代码

返回顶部
顶部