Promise的基本使用入门: ——实例化promise对象与注册回调 ——宏任务与微任务的执行顺序 ——then方法的链式调用与抛出错误(throw new Error) ——链式调用的返回值与传值 Promise的基本使用进阶: ——then.catch.finally的使用 ——all.race的使用 Promise的实现目的 ——链式调用解决回调地狱 ——异步回调现在与未来任务分离 ——信任问题(控制反转):调用过早.调用过晚(不被调用).调用次数过少过多.未能传递环境和参数.吞掉出现的…
一.概念 首先我们要理解Generator和Promise的概念. Generator:意思是生成器,可以在函数内部通过yeild来控制语句的执行或暂停状态. *Foo(){ yeild console.log('step1'); yeild console.log('step2'); } run(foo){ var step = foo(); while(!step.done){ step.next(); } } run(Foo); // step1 // step2 通过上面这个例子可以看到…
系列文章 -- ES6笔记系列 很久很久以前,在做Node.js聊天室,使用MongoDB数据服务的时候就遇到了多重回调嵌套导致代码混乱的问题. JS异步编程有利有弊,Promise的出现,改善了这一格局,让异步编程表现出类似“同步式代码”的形式,更好地体现了它的价值. 一.基本概念 1. Promises/A+规范 Promise是一种异步编程的解决方案,本质来说其实它是一种规范,Promises/A+规范 根据规范的定义,一个Promise对象应该至少有以下的基本特点 三个状态 Promis…
Promise是ES6中新增的异步编程解决方案,体现在代码中它是一个对象,可以通过 Promise 构造函数来实例化. 其最基本的使用 new Promise(function(resolve,reject){}) 传两个参数resolve和reject 然后再逻辑里返回resolve和reject 它有两个原型方法Promise.prototype.then()Promise.prototype.catch()两个常用的静态方法Promise.all()Promise.resolve() //…
java 模拟qq源码: http://files.cnblogs.com/files/hujunzheng/QQ--hjzgg.zip…
原文:慕课网高并发实战(七)- J.U.C之AQS 在[并发编程][JDK源码]AQS (AbstractQueuedSynchronizer)(1/2)中简要介绍了AQS的概念和基本原理,下面继续对AQS进行分析. AQS设计原理 数据结构 底层是双向链表,队列的一种实现. Sync queue:同步队列,head节点主要负责后面的调度. Condition queue:单向链表,不是必须的的,也可以有多个. 设计原理 使用Node实现FIFO队列,可以用于构建锁或者其他同步装置的基础框架 利…
前言 openlayers5-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 webpack 配置介绍文档详细的 webpack 文档配置介绍,适合新手查看,我也是边看边学 vscode 安装包下载,我这边用 vscode工具编译开发前端项目,个人觉的这款工具还不错 openlayers5 api文档介绍,详细介绍 openlayers5 每个类的函数以及属性等等 op…
es6 generator函数,我们都知道asycn和await是generator函数的语法糖,那么genertaor怎么样才能实现asycn和await的功能呢? 1.thunk函数    将函数替换成一个只接受回调函数作为参数的单参数函数 /* Thunk 函数替换的不是表达式,而是多参数函数,将其替换成一个只接受回调函数作为参数的单参数函数. */ /* 注 fn 传入的是一个函数,传入一个函数形成的方法,传入参数,最后传入callback 在经过两次函数调用后,该函数就换成一个只接受回…
JavaScript引擎建立在单线程事件循环的概念上.单线程( Single-threaded )意味着同一时刻只能执行一段代码.所以引擎无须留意那些"可能"运行的代码.代码会被放置在作业队列( job queue )中,每当一段代码准备被执行,它就会被添加到作业队列.当 JS 引擎结束当前代码的执行后,事件循环就会执行队列中的下一个作业.事件循环(event loop)是JS引擎的一个内部处理线程,能监视代码的执行并管理作业队列.关于事件循环可以阅读这篇文章 ---- 一文梳理Jav…
一.起源 JavaScript中的异步由来已久,不论是定时函数,事件处理函数还是ajax异步加载都是异步编程的一种形式,我们现在以nodejs中异步读取文件为例来编写一个传统意义的异步函数: var fs = require('fs'); function readJSON(filename,callback){ fs.readFile(filename,'utf8',function(err,res){ if(err){ return callback(err,null); } try{ va…