Js(小笔记)

  1.  如果某个操作A需要某些异步获取的数据B,这个操作A是主动触发的,所以在这之前有或许很长或许很短的的时间,所以这个操作A不宜直接作为异步获取数据的回调函数。(现在用promise.all)

    //获取信息B,
    if (回调存在) {
        //进行A操作
    }
    
    //主动触发的操作A内容
    if ("有信息B") {
          // 进行A操作
    } else {
         //加入callback,claaback的内容就是进行A操作
    }

     

  2. arguments.callee 是一个指向正在执行的函数的指针,因此可以用它来实现对函数

    的递归调用(ES6 的模块自动采用严格模式,严格模式下arguments.callee)

  3.  如果要判断是否存在的值可能为0,可以用typeof(该值) != “undefined”

  4. then方法指定的回调函数,将在当前脚本所有同步任务执行完才会执行

  5. 调用resolvereject并不会终结 Promise 的参数函数的执行。如调用resolve(1)以后,后面的console.log(2)还是会执行,并且会首先打印出来。这是因为立即 resolved 的 Promise 是在本轮事件循环的末尾执行,总是晚于本轮循环的同步任务

  6. 另外,then方法指定的回调函数,如果运行中抛出错误,也会被catch方法捕获.

  7. Promise 对象的错误具有“冒泡”性质,会一直向后传递,直到被捕获为止。也就是说,错误总是会被下一个catch语句捕获。上面代码中,一共有三个 Promise 对象:一个由getJSON产生,两个由then产生。它们之中任何一个抛出的错误,都会被最后一个catch捕获

  8. Promise 内部的错误不会影响到 Promise 外部的代码,通俗的说法就是“Promise 会吃掉错误”。

  9.  Promise.reject()方法的参数,会原封不动地作为reject的理由,变成后续方法的参数。这一点与Promise.resolve方法不一致。

  10.  

    涉及到数值的时候,有时候会因为二进制转换的问题数值有变化,可以用0.55~0..58测试 

posted @ 2018-04-25 11:31  苜葉  阅读(105)  评论(0编辑  收藏  举报