博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
码农干货系列【6】--javascript异步编程之:世界上最短的Promise库
阅读量:4690 次
发布时间:2019-06-09

本文共 1513 字,大约阅读时间需要 5 分钟。

类库源码

var Promise = function () {        this.thens = [];    };    Promise.prototype = {        resolve: function () {            var t = this.thens.shift(), n;            t && (n = t.apply(null, arguments), n instanceof Promise && (n.thens = this.thens));        },        then: function (n) {            return this.thens.push(n), this;        }    }

使用方式

function f1() {            var promise = new Promise();            setTimeout(function () {                               alert(1);                promise.resolve();            }, 1500)            return promise;        }        function f2() {            var promise = new Promise();            setTimeout(function () {                alert(2);                promise.resolve();            }, 1500)            return promise;        }        function f3() {            var promise = new Promise();            setTimeout(function () {                alert(3);                promise.resolve();            }, 1500)            return promise;        }        function f4() {                alert(4);        }              f1().then(f2).then(f3).then(f4)

类库思路

主要的思路就是将主Promise下的任务列表(thens)挂靠到子Promise下。当然该库可以封装至ajax、domready等耗时的场景当中,使其可以”thenable",如:

$$.ajax("assets/xxx.php", {                     method: "GET",                     data: "q=1&rand=" + Math.random()                 }).then(function (msg) {                     alert(msg.responseText)                 });
have fun! =  =!

转载于:https://www.cnblogs.com/iamzhanglei/archive/2013/02/24/2924680.html

你可能感兴趣的文章
mysql 与 sqlserver 的不同
查看>>
Codeforces 784B Santa Claus and Keyboard Check
查看>>
MySQL 表的一些操作
查看>>
git命令行(1)
查看>>
8 -- 深入使用Spring -- 4...6 AOP代理:基于注解的XML配置文件的管理方式
查看>>
Ubuntu 16.04服务器 配置
查看>>
随机生成手机号
查看>>
素数与欧拉函数
查看>>
(图)关于边信息的存储
查看>>
flask + Python3 实现的的API自动化测试平台---- IAPTest接口测试平台(总结感悟篇)...
查看>>
知识点列表
查看>>
JavaSE 基础语法—三元运算符
查看>>
快速导入Excel数据到mysql
查看>>
编程之美,让美国人科技高速发展,浅谈C语言带给美国的变化
查看>>
Error querying database. Cause: java.lang.IllegalArgumentException:Failed to decrypt.(错误笔记)...
查看>>
关于Flutter
查看>>
实现页面图片阴影特效,jsp,asp,sql,php,mysql,server,apache,iis,tomcat,oracle,java,linux,dns
查看>>
jdbc、DBUtils
查看>>
一个关于vue+mysql+express的全栈项目(四)------ sequelize中部分解释
查看>>
数据库服务器监控取不到值
查看>>