自用迷你版的Deferred
啥也不说贴代码,项目用
/** * 迷你版的deferred */ function Deferred(func) { if (this instanceof Deferred === false) { return new Deferred(func) } var tuple = []; var promise = { resolve: function() { var t = tuple.shift(), n; t && (n = t.apply(null, arguments), n instanceof Deferred && (n.tuple = tuple)); }, then: function(n) { return tuple.push(n), this; } } if (func) { func.call(promise, promise.resolve); } return promise; };
demo1
var d = new Deferred(); setTimeout(function() { d.resolve('aaaa') }, 500) d.then(function(bbb){ console.log(bbb) })
demo2
1 2 3 4 5 | Deferred( function (resolve) { resolve( 'aaaa' ) }).then( function (bbb) { console.log(bbb) }) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!