文档章节

javaScript Promise异步编程范式

IamOkay
 IamOkay
发布于 2016/03/21 10:47
字数 199
阅读 154
收藏 1

Promise属于异步编程范式,并不是完全可以提供给异步编程,而是提供了一种异步结果回调的模式。

var preloadImage = function (path) {
  return new Promise(function (resolve, reject) {
    var image = new Image();
    image.onload  = resolve;
    image.onerror = reject;
    image.src = path;
  });
  
  };
preloadImage("http://www.yourdomain.com/images/icon_test.png").then(function(){
    console.log('load success');
},function(){
    console.log('load failed');
}).then(function(){
    console.log('load success');
},function(){
    console.log('load failed');
});

在看一个例子,参数传递的(我们使用ajax同步,也能发现)

function search(term) {
  var url = 'http://example.com/search?q=' + term;
  var xhr = new XMLHttpRequest();
  var result;

  var p = new Promise(function (resolve, reject) {
    xhr.open('GET', url, true);
    xhr.onload = function (e) {
      if (this.status === 200) {
        result = JSON.parse(this.responseText);
        resolve(result);
      }
    };
    xhr.onerror = function (e) {
      reject(e);
    };
    xhr.send();
  });

  return p;
  
  }
  
  search("Hello World").then(console.log, console.error);

当然我们还可以直接调用,下面的实现是异步的

Promise.resolve().then(function(){});
Promise.reject().then(function(){},function(){});


© 著作权归作者所有

IamOkay

IamOkay

粉丝 204
博文 483
码字总数 403228
作品 0
海淀
程序员
私信 提问
探索Javascript异步编程

笔者在之前的一片博客中简单的讨论了Python和Javascript的异同,其实作为一种编程语言Javascript的异步编程是一个非常值得讨论的有趣话题。 JavaScript 异步编程简介 回调函数和异步执行 所谓...

naughty
2014/05/22
4.4K
8
Javascript Promise 为什么这么迷人

摘录 – Parse JavaScript SDK现在提供了支持大多数异步方法的兼容jquery的Promises模式,那么这意味着什么呢,读完下文你就了解了。 “Promises” 代表着在javascript程序里下一个伟大的范式...

jinker
2013/02/02
12.3K
8
V8 中更快的异步函数和 promises

原文作者:Maya Lekova and Benedikt Meurer 译者:UC 国际研发 Jothy 写在最前:欢迎你来到“UC国际技术”公众号,我们将为大家提供与客户端、服务端、算法、测试、数据、前端等相关的高质量...

2018/11/29
0
0
Javascript异步编程 - 函数式编程 - Javascript核心

原文: http://pij.robinqu.me/JavaScriptCore/FunctionalJavaScript/AsyncProgramingInJavaScript.html 源代码: https://github.com/RobinQu/Programing-In-JavaScript/blob/master/chapte......

RobinQu
09/29
0
0
【译】开发做了这么多年,你真的了解 JS 工作机制吗

本文的主题是 JavaScript,但不是讲它的功能,语法之类——相反,我要谈的是JS 的工作机制,以及与此相关的一些基本术语。下面进入主题。 相关术语 如果你曾看过 JS 的之类的资料,那么肯定会...

小前端96
07/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

堆”和“栈

C++作为一款C语言的升级版本,具有非常强大的功能。它不但能够支持各种程序设计风格,而且还具有C语言的所有功能。我们在这里为大家介绍的是其中一个比较重要的内容,C++内存区域的基本介绍。...

SibylY
10分钟前
1
0
总结:Https

一、介绍 简单理解,https即在http协议的基础上,增加了SSL协议,保障数据传输的安全性。 它由以前的http—–>tcp,改为http——>SSL—–>tcp;https采用了共享密钥加密+公开密钥加密的方式 ...

浮躁的码农
13分钟前
1
0
数据库表与表之间的一对一、一对多、多对多关系

表1 foreign key 表2 多对一:表 1 的多条记录对应表 2 的一条记录 利用foreign key的原理我们可以制作两张表的多对多,一对一关系 多对多: 表1的多条记录可以对应表2的一条记录 表2的多条记...

Garphy
44分钟前
6
0
MySQL 表崩溃修复

MySQL日志报错 2019-10-19 13:41:51 19916 [ERROR] /usr/local/mysql/bin/mysqld: Table './initread_hss/user_info' is marked as crashed and should be repaired2019-10-19 13:41:51 1......

雁南飞丶
54分钟前
6
0
Error和Exception

1.Error类和Exception类都是继承Throwable类 2.Error(错误)是系统中的错误,程序员是不能改变的和处理的,是在程序编译时出现的错误,只能通过修改程序才能修正。一般是指与虚拟机相关的问...

大瑞清_liurq
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部