有两个请求
promiseA、promiseB,promiseA的请求结果相对promiseB的结果要准确一些,但promiseA比promiseB请求抖动厉害,promiseB在2s内肯定会返回结果,promiseA请求时长不定,但要求在2s内如果promiseA有结果优先用promiseA的结果、如果在2s内promiseA没有返回请求结果,就用promiseB的结果
题目如下、请实现schedule
async function schedule(promiseA, promiseB) {...}
const promise1 = () => new Promise((resolve) => {
setTimeout(() => resolve(5), 1500)
})
const promise2 = () => new Promise((resolve) => {
setTimeout(() => resolve(6), 1000)
})
const promise3 = () => new Promise((resolve) => {
setTimeout(() => resolve(7), 2500)
})
const promise4 = () => new Promise((resolve) => {
setTimeout(() => resolve(8), 1200)
})
schedule(promise1, promise2).then(console.log) //打印 5
schedule(promise2, promise1).then(console.log) //打印 6
schedule(promise3, promise4).then(console.log) //打印 8
看下面之前、请先思考🤔一下下
async function schedule(promiseA, promiseB) {
const task = [];
let result;
promiseA().then((rA) => {
const r = task.pop();
r && r(rA);
});
promiseB().then((rB) => {
result = rB;
});
setTimeout(() => {
const r = task.pop();
r && r(result);
}, 2000)
return await new Promise((resolve) => task.push(resolve));
}
请在下面评论留下你的思考!!!