码迷,mamicode.com
首页 > 其他好文 > 详细

Promise对象

时间:2017-06-08 00:12:27      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:define   syn   回调   img   order   asc   回调函数   改变   log   

promise是异步编程的一种解决方案,promise对象代表一个异步操作。

promise对象有三种状态:pending(进行中),resolved(已完成)和rejected(已失败),只有异步操作的结果可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。

Promise对象是一个构造函数,用来生成Promise实例。

var promise = new Promise(function(resolve, reject) {
  // ... some code

  if (/* 异步操作成功 */){
    resolve(value);
  } else {
    reject(error);
  }
});



Promise构造函数接收2个函数参数:

1.resolve函数:将promise对象从pending状态变为resolved。在异步操作成功时调用,并将异步调用的结果作为参数传递出去。

2.reject函数:将promise对象从pending状态变为rejected状态。在异步操作失败时调用,并将异步操作报出的错误传递出去。

Promise实例生成之后,可以使用then方法分别指定Resolved状态和Rejected状态的回调函数。

实例:异步加载图片

function loadImageAsync(url) {
  return new Promise(function(resolve, reject) {
    console.log(‘start‘)

    var image = new Image();

    image.onload = function() {

      resolve(image);
      console.log(‘image.onload‘)
    };

    image.onerror = function() {
      console.log(‘image.onerror‘)
      reject(new Error(‘Could not load image at ‘ + url));
    };

    image.src = url;
    console.log(‘end‘)
  });
}

执行:
var s=loadImageAsync(‘https://imgsrc.baidu.com/imgad/pic/item/caef76094b36acaf0accebde76d98d1001e99ce7.jpg‘)

结果:
start
end
undefined
image.onload


执行:

s

结果:

Promise {[[PromiseStatus]]: "resolved", [[PromiseValue]]: img}

执行:

var f=loadImageAsync(‘https://imgsrc/c323232.jpeg‘)

结果:
start
end
undefined
image.onerror
Uncaught (in promise) Error: Could not load image at https://imgsrc/c323232.jpeg

 

Promise对象

标签:define   syn   回调   img   order   asc   回调函数   改变   log   

原文地址:http://www.cnblogs.com/hejingjing/p/6958196.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!