+
80
-

uniapp如何让request按照队列顺序依次执行?

uniapp如何让request按照队列顺序依次执行?


网友回复

+
0
-

可以采用队列的方式

在uniapp根目录下新建util目录,新建quene.js

var quene = {

	// 任务队列
	tasks: [],
	// 标志位,表示当前是否有任务正在执行
	isRunning: false,
	// 添加任务到队列中
	addTask: function(task) {
		// 将任务添加到队列中
		this.tasks.push(task);
		// 如果当前没有任务正在执行,则执行队列中的任务
		if (!this.isRunning) {
			this.runTasks();
		}
	},
	// 执行队列中的任务
	runTasks: function() {
		// 将标志位设为true,表示当前有任务正在执行
		this.isRunning = true;
		// 取出队列中的第一个任务并执行
		const task = this.tasks.shift();
		task(() => {
			// 当任务完成时,继续执行下一个任务
			if (this.tasks.length > 0) {
				this.runTasks();
			} else {
				// 如果队列中没有任务了,则将标志位设为false
				this.isRunning = false;
			}
		});
	}






};

module.exports = quene;

在page中可以直接引入调用了

		
import quene from '../../../util/quene.js';				
// 添加任务到队列中
				quene.addTask(callback => {
					// 执行异步任务
					uni.request({
						url: "",
						data: {},
						method: 'POST',
						success: (res) => {
							callback();
						},
						fail: () => {
							callback();
						}
					})

				});

				quene.addTask(callback => {
					// 执行异步任务
					uni.request({
						url: "",
						data: {},
						method: 'POST',
						success: (res) => {
							callback();
						},
						fail: () => {
							callback();
						}
					})
					// 执行异步任务
					setTimeout(() => {
						console.log('Task 2 finished');
						callback();
					}, 7000);
				});

我知道答案,我要回答