简介

new Promise(function(resolve,reject){});

状态

  • pending: 初始状态,成功或失败状态。
  • fulfilled: 意味着操作成功完成。对应resolve
  • rejected: 意味着操作失败。对应reject

resolve:使用resolve  状态变为fulfilled会调用第一个函数

var p = new Promise(function (resolve, reject) {var timer = setTimeout(function () {console.log('执行操作1');resolve('这是数据1');}, 1000);});
p.then(function (data) {console.log(data);console.log('这是成功操作');
});//执行操作1
//VM36:8 这是数据1
//VM36:9 这是成功操作

reject:使用reject  会调用第二个的then

var p = new Promise(function (resolve, reject) {reject('这是数据2');
});p.then(function(data){//状态为fulfilled时执行console.log(data);console.log('这是成功操作');},function(reason){ //状态为rejected时执行console.log(reason);console.log('这是失败的操作');
});//这是数据2
//VM42:10 这是失败的操作

catch:catch与reject一样

var p = new Promise(function (resolve, reject) {reject('这是数据2');});
p.then(function(data){console.log(data);console.log('这是成功操作');
}).catch(function(reason){console.log(reason);console.log('这是失败的操作');
});//VM48:8 这是数据2
//VM48:9 这是失败的操作

目的:解决回调地狱

普通写法

setTimeout(function () {console.log('我');setTimeout(function () {console.log('爱');setTimeout(function () {console.log('米');setTimeout(function () {console.log('饭');}, 1000);}, 1000);}, 1000);
}, 1000);
//3
//VM54:2 我
//VM54:4 爱
//VM54:6 米
//VM54:8 饭

promise写法

function getStr1() {return new Promise(function (resolve, reject) {setTimeout(function () {resolve('我');}, 1000);});
}
function getStr2() {return new Promise(function (resolve, reject) {setTimeout(function () {resolve('爱');}, 1000);});
}
function getStr3() {return new Promise(function (resolve, reject) {setTimeout(function () {resolve('米');}, 1000);});
}
function getStr4() {return new Promise(function (resolve, reject) {setTimeout(function () {resolve('饭');}, 1000);});
}
getStr1().then(function (data) {console.log(data);return getStr2();
}).then(function (data) {console.log(data);return getStr3();
}).then(function (data) {console.log(data);return getStr4();
}).then(function (data) {console.log(data);
})
//Promise {<pending>}
//VM59:30 我
//VM59:33 爱
//VM59:36 米
//VM59:39 饭

promise存在的意义分析resolve reject catch相关推荐

  1. promise异步请求串行异步then并行异步all竞争异步race 传递参数resolve(then)reject(catch)

    1.印象 古人云:"君子一诺千金",这种"承诺将来会执行"的对象在JavaScript中称为Promise对象. Promise就是解决多个异步请求的问题 Pr ...

  2. Promise初步详解(resolve,reject,catch

    Promise其实是一个构造函数,它有resolve,reject,race等静态方法;它的原型(prototype)上有then,catch方法,因此只要作为Promise的实例,都可以共享并调用P ...

  3. 前端js进阶之ES6 Promise(承诺)用法小结笔记、详细解释(resolve,catch,catch)历史最通俗易懂的承诺

    什么是Promise? 英文翻译:承诺! js里: Promise 是异步编程的一种解决方案,其实是一个构造函数,自己身上有all.reject.resolve这几个方法,原型上有then.catch ...

  4. Promise的真正意义--不只为回调地狱

    前言 前两天在吃饭时,同事忽然抛出一个问题,Promise 的真正意义是啥? 对话场景如下: 他:Promise 的意义是啥? 我:为解决回调地狱,增强了代码可读性,改善了代码结构 他:这是大家都知道 ...

  5. Typescript实现Promise,[then|catch|finally|resolve|reject|race|all|any]

  6. [node.js] Promise中,resolve, reject 之后需不需要 return?

    答案是,需要. 为了阻止后面的代码被执行,应当加上 return,或者直接使用: return resolve(...) 详细解释:https://stackoverflow.com/a/325360 ...

  7. Promise为什么同时触发了then和catch

    请求成功了,调用了then方法,按道理就不会调用catch方法,所以如果Promise同时调用了then和catch方法,那就是then方法里面出现了错误: 情景来源是,项目是二期开发,上线后把一期数 ...

  8. bfs+dfs分析----poj 3278 Catch That Cow

    题目详情 Catch That Cow Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 115430   Accepted:  ...

  9. 浅谈校园能耗监测管理平台应用意义分析-Susie 周

    1.引言 随着近年来经济快速发展,对于电力资源的需求也持续扩大,不可避免地出现了能源紧缺.环境污染等问题,节能减排也就成了国家建设的重中之重.因此为提高能源管理水平,带头节能减排,全国各大高校依据国家 ...

最新文章

  1. JBOSS5.0 Beta4 配置详解
  2. ADO.NET复习总结(4)--访问SqlServer的类
  3. 超强 css 实现 table 隔行 ,隔列 换色
  4. 设计模式--原型(Prototype)模式
  5. word count in latex, relatively accurate
  6. 【转】C# 中的委托和事件
  7. 铭感文件目录_waf绕过
  8. 学习笔记--Dubbo
  9. 【操作系统】磁盘结构
  10. windows2016安装.netFramework 3.5
  11. python html模板_Python html.format_html方法代码示例
  12. iphone 使用Core Graphics 剪贴图片
  13. 【LeetCode】剑指 Offer 22. 链表中倒数第k个节点
  14. 奖励名单表格模板_“我用一套表格,解决了孩子的拖延症,一路用到小学高年级!”...
  15. linux服务器连接中文,Linux系统遇到SecureCRT连接到linux服务器之后出现乱码问题
  16. js压缩代码后怎么生成source map_浅谈前端代码加密
  17. 【Linux】nasm/yasm not found
  18. Android 计时器Chronometer 使用及源码分析,常见移动app开发框架
  19. 磁盘介质受写入保护(非u盘)解决办法
  20. 计算机英语四六级对调剂有影响吗,四六级没过影响考研复试和调剂吗?各高校标准不一...

热门文章

  1. SpringCloud动态获取yml文件里面的自定义配置
  2. SQLite AND/OR 运算符(http://www.w3cschool.cc/sqlite/sqlite-and-or-clauses.html)
  3. Java程序执行Linux命令
  4. dede中list标签php,dedecms标签中什么表示列表标签
  5. python代码执行过程记录_[原创]IDAPython+OdbgScript动态获取程序执行流程
  6. 此内容不能显示在一个框架中 ie_Chromium Edge中的IE兼容模式 与我们设想的有些不一样...
  7. Kafka为什么速度那么快?
  8. 百度地图api 去左下角百度地图logo的方法
  9. 小木木的Python学习笔记
  10. Tomcat内存设置详解