ES6: Promise函数

  • Promise的三种状态
    Pending:进行中 | Resolved(已完成)|Rejected(已失败)

  • 例子

var promise = new Promise(function(resolve,reject){
  $.ajax({
    success: function(data){
        resolve(data)
    },
   error: function(err){
       reject(err)
  }
  })})

使用

promise.then(function(data){
dosomething(data)
},function(err){
do something(err)
})
  • 错误捕捉catch
    可以用catch来捕捉错误。

  • 封装一个promise方法

function getFn(url){
  return new Promise(function(resolve,reject){
    $.ajax({
        url: url,
        success: function(data){
          resolve(data);
      },
        error: function(err){
          reject(err)
      }
    })
})
}
//使用
getFn(url).then(function(data){
  return getFn(url2)
}).then(function(url3){
})
  • Promise.all()
    promise.all接受一个由多个promise对象,包装成一个新的promise对象.
    如下,三个promise对象必须都是resolve状态,这个新的promise对象才会是resolve状态

** 在平时的开发中,我们可能碰到这种情况,需要多个接口的返回的数据拼装在一起渲染页面之后再执行相应的事件,这时,Promise.all就派上用场了**

var p1 = new Promise(function(resolve){resolve(111)});
var p2 = new Promise(function(resolve){resolve(222)});
var p3 = new Promise(function(resolve){resolve(333)});
Promise.all([p1,p2,p3]).then(data)
//[111,222,333]
  • Promise.resolve()
    将现有对象转换成为一个promise对象

  • Promise.reject
    将现有对象转换成为一个promise对象
    只不过对象状态为rejec

日后会补上自己对co模块的使用和理解,这一块内容准备放在koa内容里写

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 特点 Promise能将回调分离出来,在异步操作执行之后,用链式方法执行回调,虽然es5用封装函数也能实现,但是如...
    一二三kkxx阅读 3,826评论 0 1
  • //本文内容起初摘抄于 阮一峰 作者的译文,用于记录和学习,建议观者移步于原文 概念: 所谓的Promise,...
    曾经过往阅读 5,007评论 0 7
  • 你不知道JS:异步 第三章:Promises 在第二章,我们指出了采用回调来表达异步和管理并发时的两种主要不足:缺...
    purple_force阅读 6,357评论 0 4
  • 官方中文版原文链接 感谢社区中各位的大力支持,译者再次奉上一点点福利:阿里云产品券,享受所有官网优惠,并抽取幸运大...
    HetfieldJoe阅读 13,749评论 26 95
  • 2013.08.29 黄沙飞卷塞外道, 残阳照,西风啸。 碧落长云,戍边戎旌耀。 塞雁哀鸣闻知否? 羌笛幽,胡笳瘦...
    世语鑫说阅读 1,693评论 0 0

友情链接更多精彩内容