-
如果某个操作A需要某些异步获取的数据B,这个操作A是主动触发的,所以在这之前有或许很长或许很短的的时间,所以这个操作A不宜直接作为异步获取数据的回调函数。(现在用promise.all)
//获取信息B, if (回调存在) { //进行A操作 } //主动触发的操作A内容 if ("有信息B") { // 进行A操作 } else { //加入callback,claaback的内容就是进行A操作 }
-
arguments.callee 是一个指向正在执行的函数的指针,因此可以用它来实现对函数
的递归调用(ES6 的模块自动采用严格模式,严格模式下arguments.callee)
-
如果要判断是否存在的值可能为0,可以用typeof(该值) != “undefined”
-
then
方法指定的回调函数,将在当前脚本所有同步任务执行完才会执行 -
调用
resolve
或reject
并不会终结 Promise 的参数函数的执行。如调用resolve(1)
以后,后面的console.log(2)
还是会执行,并且会首先打印出来。这是因为立即 resolved 的 Promise 是在本轮事件循环的末尾执行,总是晚于本轮循环的同步任务 -
另外,
then
方法指定的回调函数,如果运行中抛出错误,也会被catch
方法捕获. -
Promise 对象的错误具有“冒泡”性质,会一直向后传递,直到被捕获为止。也就是说,错误总是会被下一个
catch
语句捕获。上面代码中,一共有三个 Promise 对象:一个由getJSON
产生,两个由then
产生。它们之中任何一个抛出的错误,都会被最后一个catch
捕获 -
Promise 内部的错误不会影响到 Promise 外部的代码,通俗的说法就是“Promise 会吃掉错误”。
-
Promise.reject()
方法的参数,会原封不动地作为reject
的理由,变成后续方法的参数。这一点与Promise.resolve
方法不一致。 -
涉及到数值的时候,有时候会因为二进制转换的问题数值有变化,可以用0.55~0..58测试