项目地址:olivewind/weekly[1]
微信公众号:依赖注入
发布时间:2023.07.30
本周内容:资讯x2、开源x8、文章x4
动态
Promise.withResolvers 进入 Stage3
某些情况下需要在 Promise 外部获取 resolve 和 reject 句柄,我们通常会这么编写代码
function cancelableTimeout(ms) {
let cancel;
const promise = new Promise((resolve, reject) => {
const timeoutId = setTimeout(resolve, ms);
cancel = () => {
clearTimeout(timeoutId);
reject(new Error('The timeout was canceled.'))
}
});
return { promise, cancelTimeout };
}
有了 Promise.withResolvers
之后,我们的代码会简洁很多
function cancelableTimeout(ms) {
const { promise, resolve, reject } = Promise.withResolvers();
const timeoutId = setTimeout(resolve, ms);
const cancelTimeout = () => {
clearTimeout(timeoutId);
reject(new Error('The timeout was canceled.'))
}
return { promise, cancelTimeout };
}