资讯专栏INFORMATION COLUMN

对Promise的学习总结与思考

canopus4u / 3111人阅读

摘要:学习地址详见正文调用或并不会终结的参数函数的执行调用以后,后面的还是会执行,并且会首先打印出来。这是因为立即的是在本轮事件循环的末尾执行,总是晚于本轮循环的同步任务。另外,方法指定的回调函数,如果运行中抛出错误,也会被方法捕获。

学习地址详见:http://es6.ruanyifeng.com/#do...

正文

1.调用resolve或reject并不会终结 Promise 的参数函数的执行

new Promise((resolve, reject) => {
  resolve(1);
  console.log(2);
}).then(r => {
  console.log(r);
});
// 2
// 1

调用resolve(1)以后,后面的console.log(2)还是会执行,并且会首先打印出来。这是因为立即 resolved 的 Promise 是在本轮事件循环的末尾执行,总是晚于本轮循环的同步任务。
一般来说,调用resolve或reject以后,Promise 的使命就完成了,后继操作应该放到then方法里面,而不应该直接写在resolve或reject的后面。所以,最好在它们前面加上return语句,这样就不会有意外。

2.关于catch

getJSON("/posts.json").then(function(posts) {
  // ...
}).catch(function(error) {
  // 处理 getJSON 和 前一个回调函数运行时发生的错误
  console.log("发生错误!", error);
});

上面代码中,getJSON方法返回一个 Promise 对象,如果该对象状态变为resolved,则会调用then方法指定的回调函数;如果异步操作抛出错误,状态就会变为rejected,就会调用catch方法指定的回调函数,处理这个错误。另外,then方法指定的回调函数,如果运行中抛出错误,也会被catch方法捕获。

1)状态变成reject 的方式有两个:手动操作 reject() reject方法的作用,等同于抛出错误; 异步操作抛出错误,状态就会变为rejected

2)触发catch: 异步操作状态变为rejected; then方法运行中抛出错误

3)一般来说,不要在then方法里面定义Reject状态的回调函数(即then的第二个参数),总是使用catch方法。
思考:第一步出错,是直接执行catch还是接着走then? 直接被catch

3.Promise 内部的错误不会影响到 Promise 外部的代码
4.任务队列
new Promise是同步的,会马上执行function参数中的事情。等function参数执行完,new Promise才返回一个promise实例对象。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/89047.html

相关文章

  • JS笔记

    摘要:从最开始的到封装后的都在试图解决异步编程过程中的问题。为了让编程更美好,我们就需要引入来降低异步编程的复杂性。异步编程入门的全称是前端经典面试题从输入到页面加载发生了什么这是一篇开发的科普类文章,涉及到优化等多个方面。 TypeScript 入门教程 从 JavaScript 程序员的角度总结思考,循序渐进的理解 TypeScript。 网络基础知识之 HTTP 协议 详细介绍 HTT...

    rottengeek 评论0 收藏0
  • promise学习笔记

    摘要:第一个回调函数完成以后,会将返回结果作为参数,传入第二个回调函数。捕获错误方法是的别名,用于指定发生错误时的回调函数。处理前一个回调函数运行时发生的错误出错啦对象的错误具有冒泡性质,会一直向后传递,直到被捕获为止。 前言 一直想写一篇关于promise的文来总结一下之前零零散散的promise知识点,趁着工作闲暇,来做个总结。PS:本文适合有一定JavaScript基础的童鞋阅读。 什...

    cheukyin 评论0 收藏0
  • 写技术博客那点事

    摘要:从现在开始,养成写技术博客的习惯,或许可以在你的职业生涯发挥着不可忽略的作用。如果想了解更多优秀的前端资料,建议收藏下前端英文网站汇总这个网站,收录了国外一些优质的博客及其视频资料。 前言 写文章是一个短期收益少,长期收益很大的一件事情,人们总是高估短期收益,低估长期收益。往往是很多人坚持不下来,特别是写文章的初期,刚写完文章没有人阅读会有一种挫败感,影响了后期创作。 从某种意义上说,...

    ddongjian0000 评论0 收藏0
  • 写技术博客那点事

    摘要:从现在开始,养成写技术博客的习惯,或许可以在你的职业生涯发挥着不可忽略的作用。如果想了解更多优秀的前端资料,建议收藏下前端英文网站汇总这个网站,收录了国外一些优质的博客及其视频资料。 前言 写文章是一个短期收益少,长期收益很大的一件事情,人们总是高估短期收益,低估长期收益。往往是很多人坚持不下来,特别是写文章的初期,刚写完文章没有人阅读会有一种挫败感,影响了后期创作。 从某种意义上说,...

    NSFish 评论0 收藏0
  • promise学习(3)

    摘要:此时,由于只有一个的状态能够确定,所以执行的是唯一那个确定状态的函数,而不会执行其他的,但是并不会阻止其他的执行。在实际应用中,常用来设置超时操作,比如接口请求超时等。思考这个其实并不是矛盾,接受的是返回的的状态,与原来的没有关系。 原文地址 Promise.race // `delay`毫秒后执行resolve function timerPromisefy(delay) { ...

    阿罗 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<