我们知道promise有三个状态:等待(pending)、已完成(fulfilled)、已拒绝(rejected),
而且我们只能在任务发起之前进行绑定,在then/catch/finally中处理任务,例如:
new Promise((resolve, reject) => {
// 延时任务,异步任务
setTimeout(() => {
resolve('')
}, 1000)
}).then((data) => {
console.log(data)
})
// 接口请求
getList(parmas).then((data) => {
console.log(data)
})
那么有没有办法可以不用事先绑定呢?答案是肯定的,这里需要引入一个第三方库async-task-mapping,首先执行createTaskList()初始化一个任务列表,
三个参数:
- ordered是否按照先绑定后请求的顺序,
- requestCount:访问结果的次数,
- responseCount:向任务列表内增加几个数据
import { createTaskList } from 'async-task-mapping'
const asyncTask = createTaskList({ordered: false, requestCount: 1, responseCount: 1})
// 上面的接口请求就可以改为
co