美文网首页网页前端后台技巧(CSS+HTML)JavaScript 进阶营
我对Promise警告信息的理解a promise was cr

我对Promise警告信息的理解a promise was cr

作者: 一个冬季 | 来源:发表于2018-03-16 17:27 被阅读5次

BUG内容如下:
a promise was created in a handler but was not returned from it
代码:

function runAsync1() {
         var p = new Promise(function (resolve, reject) {
         //做一些异步操作
         setTimeout(function () {
         console.log('异步任务1执行完成');
         resolve('随便什么数据1');
         }, 1000);
         });
         return p;
         }

   function runAsync2() {
         var p = new Promise(function (resolve, reject) {
         //做一些异步操作
         setTimeout(function () {
         console.log('异步任务2执行完成');
         resolve('随便什么数据2');
         }, 5000);
         });
         return p;
         }

               runAsync1()
                .then(function(data){
                    console.log(data);
                    runAsync2();  //错误的地方,因为没有返回数据给后面
                }).catch(function(e){
                    console.log(e);
                });

二种解决办法:
1、在错误的行的下面添加 return null
2、拿掉catch
出现异常地方的截图:


错误1.png
错误2.png

2591行,这里X为undefine,然后944行就进入了if里面了,错误警告信息就是在if里面。
如果拿掉catch,到了这一步会终止,不继续往下执行了


终止了.png

导致这个的警告原因:
我对上图的猜想+下面展示的图的理解: runAsync2()新开启了一Promise,这在Promise是不允许的,因为他破坏了链式的操作,如果在runAsync2()出现了异常那么将无法补货它,所以当我们启动一个then()方法的链式时候,应该禁止启动另外一个then()方法的链式操作。核心思想就是要链式调用,破坏链式的都不正确。下图是在gitHub上看到有人出现我这样的警告,它是调用somehingComplicated()出现的警告信息

别人的解读.png
别人的截图2.png
我对下图的猜想+理解:他的道理跟上面的差不多,都必须要链式调用,那个人没有retrun 一个Promise的对象回来,后续的then立即调用了
解释.png

请勿打我脸,哈哈哈哈哈哈
参考网址:
http://taoofcode.net/promise-anti-patterns/ (别人的截图.png的地址)
https://github.com/petkaantonov/bluebird/issues/508 (解释.png的地址)

相关文章

  • 我对Promise警告信息的理解a promise was cr

    BUG内容如下:a promise was created in a handler but was not re...

  • Promise async/await

    Promise async/await 参考初探promise promise 理解 JavaScript ...

  • 对Promise的理解

    对Promise的理解,主要是对Promise源代码分析展开(附上github链接https://github.c...

  • Promise原理解析

    Promise原理解析 标签(空格分隔): Node.js Promise原理解析 简介 Promise 对象用于...

  • Promise用法详解

    参考promise|深入理解 promise:promise的三种状态与链式调用 Promise对象只有三种状态 ...

  • 再次理解Promise

    对task queue 和 Event loop了解之后,再次理解一下Promise: Promise是什么 co...

  • 对promise的理解?

    Promise是解决异步编程的方案;promise是为解决异步处理回调金字塔问题而产生的 resolve函数的作用...

  • async函数

    async 要理解 async 先要掌握 Promise 的概念,了解 Promise 请戳我! async 函数...

  • Lesson-11 ES6 高级语法(2)

    Promise 我觉得可以简单的把promise理解成一个拥有状态的队列,promise拥有三个状态Pending...

  • Promise - 04 Promise 的理解和使用

    Promise 的理解和使用 1: Promise 是什么? 抽象表达Promise 是 JS 中进行异步编程的新...

网友评论

    本文标题:我对Promise警告信息的理解a promise was cr

    本文链接:https://www.haomeiwen.com/subject/objrqftx.html