uniapp如何让request按照队列顺序依次执行?
网友回复
可以采用队列的方式
在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); });