[Web] 取消Promise
2024-09-08 15:36:57
转载自 为Promise插上可取消的翅膀
const makeCancelable = (promise) => {
let hasCanceled_ = false;
const wrappedPromise = new Promise((resolve, reject) => {
promise.then((val) =>
hasCanceled_ ? reject({isCanceled: true}) : resolve(val)
);
promise.catch((error) =>
hasCanceled_ ? reject({isCanceled: true}) : reject(error)
);
});
return {
promise: wrappedPromise,
cancel() {
hasCanceled_ = true;
},
};
};
//调用
const somePromise = new Promise(r => setTimeout(r, 1000));//创建一个异步操作
const cancelable = makeCancelable(somePromise);//为异步操作添加可取消的功能
cancelable
.promise
.then(() => console.log('resolved'))
.catch(({isCanceled, ...error}) => console.log('isCanceled', isCanceled));
// 取消异步操作
cancelable.cancel();
最新文章
- facebook 简单的图文分享
- mssql
- visual C++ 项目和解决方案的区别
- AngularJS模型 ng-model 指令
- RTL8710 ROM 符号表 函数,常量,变量
- A股回归牛市?
- JVM知识学习与巩固
- mongodb c++ 驱动库编译
- Cloudra公司CCP:DS——认证数据专家
- JS 昵称,手机号,邮箱判断
- BZOJ1059_矩阵游戏_KEY
- 软件工程作业-(second)
- jquery动态添加的元素不能直接应用事件方法的时候
- pheatmap, gplots heatmap.2和ggplot2 geom_tile实现数据聚类和热图plot
- 未能执行URL
- 转:vim模式下报错E37: No write since last change (add ! to override)
- MySQL 5.7新特性之generated column
- PHP四大基本排序算法实例
- K-近邻
- 前端开发面试题-JavaScript(转载)