Promises

Starting with ECMAScript 6, JavaScript gains support for Promise objects allowing you to control the flow of deferred and asynchronous operations.

Promise is in one of these states:

  • pending: initial state, not fulfilled or rejected.
  • fulfilled: successful operation
  • rejected: failed operation.
  • settled: the Promise is either fulfilled or rejected, but not pending.

Loading an image with XHR

A simple example using Promise and XMLHttpRequest to load an image is available at the MDN GitHubpromise-test repository. You can also see it in action. Each step is commented and allows you to follow the Promise and XHR architecture closely. Here is the uncommented version, showing the Promise flow so that you can get an idea:

function imgLoad(url) {
  return new Promise(function(resolve, reject) {
    var request = new XMLHttpRequest();
    request.open(‘GET‘, url);
    request.responseType = ‘blob‘;
    request.onload = function() {
      if (request.status === 200) {
        resolve(request.response);
      } else {
        reject(Error(‘Image didn\‘t load successfully; error code:‘
                     + request.statusText));
      }
    };
    request.onerror = function() {
      reject(Error(‘There was a network error.‘));
    };
    request.send();
  });
}

  

For more detailed information, see the Promise reference page.

时间: 2024-12-09 01:15:05

Promises的相关文章

[Node.js] Testing ES6 Promises in Node.js using Mocha and Chai

Writing great ES6 style Promises for Node.js is only half the battle. Your great modules must include tests as well to ensure future iterations don't break them. In this lesson, I show you a simple ES6 Promise in Node.js, then walk you through creati

We have a problem with promises

原文地址:http://fex.baidu.com/blog/2015/07/we-have-a-problem-with-promises/ 用Javascript的小伙伴们,是时候承认了,关于 promises 我们一直存在着问题.并非说 promises 本身有问题,Promises/A+ 是极好的. 就我过去数年观察大量 PouchDB API 以及其他 promise-heavy API 的使用者们与这些 API 的搏斗中我发现,最大的问题是: 大部分使用 promises 的小伙伴们

并行和并发编程-Futures 和 Promises【翻译】

官网地址 本文内容 简介 Futures 阻塞 异常 Promises 工具 最近看了<七周七语言:理解多种编程泛型>,介绍了七种语言(四种编程泛型)的主要特性:基本语法,集合,并行/并发,其中就有 Scala.你不能指望这种书全面介绍,因为其中任何一门语言都够写一本书了~ 我比较关注并行/并发,但是书中关于 Scala 的并发部分--Actor,代码编译不通过,"Deprecated",哎,这书点不负责,代码也不写采用编译器的版本.于是就到 Scala 官网看了一下,即便

NodeJS Multiple Callback解决之使用Q Promises

在上一篇<Javascript Promises模式--相当酷的Callback Hell终结者>我们介绍了Javascript的Promise模式,接着我们就把Javascript Promise用到我们的代码中. JavaScript Promise库 Q 之前试着用过Q,但是没有成功.或者说,在那时候不需要用上Q,所以没有深究.现在抱着学习的态度,重新试了一下,效果还不错. A tool for making and composing asynchronous promises in

Using promises

[Using promises] 过去,异步方法这样写: function successCallback(result) { console.log("It succeeded with " + result); } function failureCallback(error) { console.log("It failed with " + error); } doSomething(successCallback, failureCallback); 使用

mongoose 文档(十) Promises

Built-in Promises Mongoose 异步操作,像 .save() 和 queries,返回 Promises/A+ conformant promises. This means that you can do things like MyModel.findOne({}).then() and yield MyModel.findOne({}).exec() (if you're using co). 这就是说你可以做一些像MyModel.findOne({}).then()

node.js下when.js(Promises/A)的实践

假设一个业务场景: 通过rss地址,获取rss并保存于文件,rss地址保存于文件中. 完成该场景的业务需要完成3个任务: 1.从文件中读取rss地址. 2.获取rss. 3.保存于文件. 最后将这三个任务进行整合. 准备: 存放rss地址的文件,address.txt. http://programmer.csdn.net/rss_programmer.html 任务1: 读取rss地址文件的内容并通过callback返回. var getRssAddress = function(path,

when.js与Promises

上篇文章介绍了JavaScript异步机制,请看这里. JavaScript异步机制带来的问题 JavaScript异步机制的主要目的是处理非阻塞,在交互的过程中,会需要一些IO操作(比如Ajax请求,文件加载,Node.js中的文件读取等),如果这些操作是同步的,就会阻塞其它操作. 异步机制虽然带来了许多好处,但同时也存在一些不如意的地方. 代码可读性 这样的代码读起来简直累觉不爱啊~~~ operation1(function(err, result) { operation2(functi

初始JavaScript Promises之二

初始JavaScript Promises之二 上一篇我们初步学习了JavaScript Promises,本篇将介绍Promise如何优雅地进行错误处理以及提升操作node.js风格1的异步方法的逼格,没错就是使用promisify2. 异步编程中的错误处理 人性的.理想的也正如很多编程语言中已经实现的错误处理方式应该是这样: try {     var val = JSON.parse(fs.readFileSync("file.json")); }catch(SyntaxErro

【转】We have a problem with promises

这是我看的自认为最好的一篇讲解如何使用Promise的文章,原文地址:http://fex.baidu.com/blog/2015/07/we-have-a-problem-with-promises/ 用Javascript的小伙伴们,是时候承认了,关于 promises 我们一直存在着问题.并非说 promises 本身有问题,Promises/A+ 是极好的. 就我过去数年观察大量 PouchDB API 以及其他 promise-heavy API 的使用者们与这些 API 的搏斗中我发