promise核心6 自定义promise】的更多相关文章

1.定义整体结构(不写实现) 定义一个自己的promise的库 lib(库的简写) 一个js文件.一个js模块(不能用es6  也不能commjs)(用es5模块语法 ) 匿名函数自调用.IIFE (function (window) { function Promise(excutor) { } //成功失败时候调用的回调函数,返回一个新的promise对象 Promise.prototype.then = function(onResoled, onRejected) {} Promise.…
为什么要用promise 1.使用纯回调函数 先指定回调函数,再启动异步任务 答 1.指定回调函数的方式更加灵活 可以在执行任务前,中,后 2.支持链式调用,解决回调地狱问题 什么是回调地狱:回调函数嵌套使用,下一层回调函数依赖上一层回调函数的结果 解决方案.promise链式 终极解决方案 async/await async function request() { try { const result = await dosongthing() const newResult = await…
作者: HerryLo 本文永久有效链接: https://github.com/AttemptWeb...... Promises对象被用于表示一个异步操作的最终完成 (或失败), 及其结果值.主要是为了解决异步操作的问题. #Promise对象的状态 一个 Promise对象有以下三种状态: pending: 初始状态,既不是成功,也不是失败状态. fulfilled(resolved): 意味着操作成功完成. rejected: 意味着操作失败. Promise对象内部运行的一个变化, 变…
核心 构造函数核心 维护状态变量,只能由pending变为resolve或者reject 维护一个存储结果的变量 维护一个回调数组,执行到then,如果我们传入的立即执行函数没有立即执行resolve或者reject,所以promise的状态还是pending,这时要把then里面的回调函数保存起来.待到resolve或者reject执行后则执行回调数组里存到方法.若传入的立即执行函数直接执行了resolve或者reject此时就不用把回调保存起来,直接执行onResolved或onReject…
1.如何改变pending的壮体 抛出异常.pending变为rejected  // throw new Error('fail')  内部抛出异常也这样 reason为抛出的error resolve() pending变为resolved reject()pending变为rejected 2.一个promise指定多个成功/失败的回调 都会执行吗 全部都会执行 3.改变promise状态和指定回调函数的先后 一般异步情况 先指定的回调函数(内部保存回调函数),后改变状态(指定数据),然后…
基础 Promise 抽象表达:是js中进行异步编程的新的解决方案 具体解释:1.从语法上来说是一个构造函数 2.从功能上来说promise对象用来封装一个异步操作并可以获取其结果 状态改变:0.new实例为pending(未知)状态 1.pending变为resolved(成功) 2.pending变为rejected(失败) 一个promise对象只能改变一次,成功结果数据一般为value,失败结果数据一般为reason 示例代码 const p1 = new Promise ( funct…
手写一款符合Promise/A+规范的Promise 长篇预警!有点长,可以选择性观看.如果对Promise源码不是很清楚,还是推荐从头看,相信你认真从头看到尾,并且去实际操作了,肯定会有收获的.主要是代码部分有点多,不过好多都是重复的,不必担心 Promise的一些用法在此不多赘述,本篇主要带领你手写一个Promise源码,学完你就会发现:Promise没有你想象中的那么难 本篇大概分为以下步骤 实现简单的同步Promise 增加异步功能 增加链式调用then 增加catch finally方…
相信很多人刚接触promise都会晕,但学会后却离不开它,本文详细介绍一下promise,promise解决的问题,帮助新手快速上手 [扫盲] 什么是promise? promise是一种约定,并非一种技术,像设计模式一样,跟语言无关.框架无关.js里面实现promise的框架有很多,如:Q.jQuery等. promise有什么用? 它主要是为了解决js异步回调时业务太乱,尤其嵌套异步时,代码也很丑,维护性也差,错误处理也不能统一这些问题.因此目前也只有js语言会使用promise [案例]…
Nginx 核心配置-自定义日志路径及清空日志注意事项 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.关于日志清空注意事项 1>.nginx服务写访问日志是基于access.log的inode写入的,而非基于文件名称写入 [root@node101.yinzhengjie.org.cn ~]# ps -ef | grep nginx | grep -v grep #首先确认nginx服务是启动的 root 2840 1 0 09:37 ? 00:00:00 nginx:…
Nginx 核心配置-自定义错误页面 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 生产环境中错误页面一般都是UI或开发工程师提供的,他们已经在软件中定义好了,我们这里就简单写个html页面就好啦. 一.编辑nginx的配置文件 1>.查看nginx的主配置文件 [root@node101.yinzhengjie.org.cn ~]# cat /yinzhengjie/softwares/nginx/conf/nginx.conf worker_processes 4; wo…