前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

Promise

作者头像
用户3258338
发布2020-02-11 15:48:32
6720
发布2020-02-11 15:48:32
举报

1.语法

代码语言:javascript
复制
new Promise( function(resolve, reject) {...} /* executor */  );

参数

executor

executor是带有resolve和reject两个参数的函数。

Promise构造函数执行时立即调用executor函数,resolve和reject两个函数作为参数传递给executor(executor函数在Promise返回所建promise实例对象前被调用)。

resolve和reject函数被调用时,分别将promise的状态改为fulfilled(完成)或rejected(失败)。

executor内部通常会执行一些异步操作,一旦异步操作执行完毕(成功/失败)要么调用resolve函数来将promise状态改成fulfilled,要么将promise函数将状态改为rejected。如果在executor函数中抛出一个错误,那么该promise状态为rejected。


2.描述

promise对象是一个代理对象(代理一个值),被代理的值在Promise对象创建时可能是未知的。它允许你对异步操作的成功和失败分别绑定对应的处理方法。这让异步方法可以像同步方法那样返回值,但并不是立即返回最终执行结果,而是一个能代表未来出现的结果的promise对象。

一个promise有以下几种状态:

  • pending :初始状态
  • fulfilled:操作成功完成
  • rejected: 操作失败

3.创建Promise

想要某个函数拥有promise函数,只需让其返回一个promise即可

代码语言:javascript
复制
function myAsyncFun(url){
  return new Promise((resolve, reject)=>{
     const xhr = new XMLHttpRequest();
     xhr.open("GET",url);
     xhr.onload = ()=> resolve(xhr.responseText);
     xhr.onerror =() => reject(xhr.statusText);
     xhr.send();
  })
}

愿我们有能力不向生活缴械投降---Lin

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 女程序员的日常 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档