Promise 的应用

加载图片

我们可以将图片的加载写成一个Promise,一旦加载完成,Promise的状态就发生变化。

  1. const preloadImage = function (path) {
  2. return new Promise(function (resolve, reject) {
  3. const image = new Image();
  4. image.onload = resolve;
  5. image.onerror = reject;
  6. image.src = path;
  7. });
  8. };

Generator 函数与 Promise 的结合

使用 Generator 函数管理流程,遇到异步操作的时候,通常返回一个Promise对象。

  1. function getFoo () {
  2. return new Promise(function (resolve, reject){
  3. resolve('foo');
  4. });
  5. }
  6. const g = function* () {
  7. try {
  8. const foo = yield getFoo();
  9. console.log(foo);
  10. } catch (e) {
  11. console.log(e);
  12. }
  13. };
  14. function run (generator) {
  15. const it = generator();
  16. function go(result) {
  17. if (result.done) return result.value;
  18. return result.value.then(function (value) {
  19. return go(it.next(value));
  20. }, function (error) {
  21. return go(it.throw(error));
  22. });
  23. }
  24. go(it.next());
  25. }
  26. run(g);

上面代码的 Generator 函数g之中,有一个异步操作getFoo,它返回的就是一个Promise对象。函数run用来处理这个Promise对象,并调用下一个next方法。

es6 Promise 的应用相关推荐

  1. 十分钟快速了解 ES6 Promise

    转载自 十分钟快速了解 ES6 Promise 什么是Promise Promise最早由社区提出并实现,典型的一些库有Q,when, bluebird等:它们的出现是为了更好地解决JavaScrip ...

  2. 解读ES6 Promise

    详解ES6 Promise异步 文章目录 详解ES6 Promise异步 前言 一.Promise是什么呢... 二.resolve 三.reject 四.then() & catch() 五 ...

  3. 流程控制: jQ Deferred 与 ES6 Promise 使用新手向入坑!

    谢谢n͛i͛g͛h͛t͛i͛r͛e͛大大指出的关于Promise中catch用的不到位的错误,贴上大大推荐的文章Promise中的菜鸟和高阶错误,文章很详细说明了一些Promise使用中的错误和指导. ...

  4. es6 Promise是什么?

    # es6 Promise是什么? 1. Promise 是一个构造函数 自带三个方法 all.resolve.reject,原型上(prototype)有then.catch等的几个常用的方法. ` ...

  5. ES6 — Promise基础用法详解(resolve、reject、then、catch,all,)

    ES6 - Promise基础用法详解 Promise 是一个构造函数,它自身拥有all.reject.resolve这几个眼熟的方法, 原型上有then.catch等同样熟悉的方法. 所以,在开始一 ...

  6. ES6 promise 用法小结

    ES6 promise 用法小结 Js 是一⻔单线程语言,早期解决异步问题,大部分是通过回调函数进行. 比如我们发送 ajax 请求,就是常见的一个异步场景,发送请求后,一段时间服务器给我们响应,然后 ...

  7. Vue进阶(四十五):精解 ES6 Promise 用法

    文章目录 一.前言 二.链式操作用法 三.reject 用法 四.catch 用法 五.all 用法 六.race 用法 七.总结 八.拓展阅读 一.前言 复杂难懂概念先不讲,我们先简单粗暴地把Pro ...

  8. ES6 Promise原理

    ES6 Promise原理 一.Promise是什么 二.为什么会有Promise 1.回调地狱 + 异步同步事件调用顺序带来的双重伤害 2.回调事件的分离 三.Promise的三种状态 1.reso ...

  9. 初探 es6 promise

    javascript是单线程程序,所有代码都是单线程执行.导致javascript的网络请求都是异步执行,异步执行可以通过回调函数实现: setTimeout(callback,1000); func ...

  10. es6 --- Promise封装读取文件操作

    Promise: es6中为了解决回调地狱问题而产生的 Promise的参数 Promise的参数是一个函数. 每个Promise在实例化时,都会立即执行参数里的函数 const p = new Pr ...

最新文章

  1. Imageloader6-mUIHandler的初始化
  2. (基础)HTML文档结构知识点讲解
  3. Equipment download和自动生成的IBASE DB 信息
  4. JSP作业1--5!
  5. matlab计算流函数,hanyeah
  6. sklearn——AdaBoost应用
  7. action script3.0殿堂之路_【日本乐坛传奇】松任谷由实是谁?新音乐女王的登基之路!...
  8. windows和Linux文件路径分隔符的不同及获取
  9. WEB前端开发规范文档
  10. 从键盘输入n个整数,求它们的最小公倍数
  11. 《图解TCPIP》知识学习(1.3):协议
  12. 群晖DSM桌面无法删除快捷方式(无法右键)解决方法
  13. 学习汇编记录Day3——汇编指令
  14. 前端工程师的摸鱼日常(4)
  15. Jupyter notebook 打开网页无法显示
  16. 观张国荣的电影《霸王别姬》有感
  17. Intel 82576网卡
  18. 不属于神经网络常用算法,神经网络算法包括哪些
  19. 如何使用ANSYS workbench导出最清晰的图的步骤
  20. 网卡MAC地址相关信息大全(整理)(上)

热门文章

  1. Fresco对Listview等快速滑动时停止加载
  2. ubuntu 安装 swoole 和mac 安装swoole 扩展
  3. Linux下安装ActiveMQ
  4. java 反射无参方法_java 反射 调用无参数方法?
  5. 图解centos安装详细过程
  6. C语言--结构体与内存对齐准则简单理解
  7. 幼师资格证综合素质计算机知识点,幼师资格证复习资料
  8. 正则表达式【第二卷】
  9. Java编程的逻辑 (56) - 文件概述
  10. docker学习笔记18:Dockerfile 指令 VOLUME 介绍