FE-Interview
FE-Interview copied to clipboard
Day127:按要求完成 mergePromise 代码
const timeout = (ms) =>
new Promise((resolve, reject) => {
setTimeout(() => {
resolve();
}, ms);
});
const ajax1 = () =>
timeout(2000).then(() => {
console.log("1");
return 1;
});
const ajax2 = () =>
timeout(1000).then(() => {
console.log("2");
return 2;
});
const ajax3 = () =>
timeout(2000).then(() => {
console.log("3");
return 3;
});
const mergePromise = (ajaxArray) => {
// 1,2,3 done [1,2,3] 此处写代码 请写出ES6、ES3 2中解法
};
mergePromise([ajax1, ajax2, ajax3]).then((data) => {
console.log("done");
console.log(data); // data 为[1,2,3]
});
// 执行结果为:1 2 3 done [1,2,3]
每日一题会在下午四点在交流群集中讨论,五点 Github、交流群同步更新答案
扫描下方二维码,收藏关注,及时获取答案以及详细解析,同时可解锁800+道前端面试题。
const timeout = (ms) => new Promise((resolve, reject) => {
setTimeout(() => {
resolve()
}, ms)
})
const ajax1 = () => timeout(2000).then(() => {
console.log('1')
return 1
})
const ajax2 = () => timeout(1000).then(() => {
console.log('2')
return 2
})
const ajax3 = () => timeout(2000).then(() => {
console.log('3')
return 3
})
const mergePromise = (ajaxArray) => {
var data = []
var sequence = Promise.resolve()
ajaxArray.forEach((item) => {
console.log('item', item)
sequence = sequence.then(item).then((res) => {
data.push(res)
return data
})
})
return sequence
}
mergePromise([ajax1, ajax2, ajax3]).then((data) => {
console.log('done')
// data 为[1,2,3]
console.log(data)
})
// 执行结果为:1 2 3 done [1,2,3]
const timeout = (ms) => new Promise((resolve, reject) => {
setTimeout(() => {
resolve()
}, ms)
})
const ajax1 = () => timeout(2000).then(() => {
console.log(1)
return 1
})
const ajax2 = () => timeout(1000).then(() => {
console.log(2)
return 2
})
const ajax3 = () => timeout(2000).then(() => {
console.log(3)
return 3
})
const mergePromise = (ajaxArray) => {
return new Promise((resolve, reject) => {
if (!ajaxArray.length) return resolve([])
const result = []
const request = async () => {
const ajax = ajaxArray.shift()
const res = await ajax()
result.push(res)
if (!ajaxArray.length) {
resolve(result)
} else {
request()
}
}
request()
})
}
mergePromise([ajax1, ajax2, ajax3]).then((data) => {
console.log('done')
console.log(data) // data 为[1,2,3]
})
// 执行结果为:1 2 3 done [1,2,3]