在Promise对象创建期间将哪些值传递给执行器

时间:2019-02-09 04:38:17

标签: javascript

MDN中指出:

  

executor函数由Promise实现立即执行,   传递解析函数和拒绝函数(在Promise构造函数甚至返回创建的对象之前调用执行程序)。

在对象创建期间,最初的 executor 执行中使用了什么功能 resolve reject ?那时还没有任何处理程序附加.then。

我的理解是 executor 是一个传递给Promise构造函数的函数,带有两个参数: resolve reject (它们本身是函数) 。如果在Promise创建时调用了 executor ,则调用它的 resolve reject 函数是什么?

谢谢您的帮助。

1 个答案:

答案 0 :(得分:2)

执行程序函数被执行,并且要返回值或将错误引发给promise处理程序,它需要一些回调。这些回调应在执行范围内可用,并且应从诺言中可用。这是在以下示例中由promise的构造函数传递的resolvereject值的目的。

var a = new Promise((resolve,reject) => {
  setTimeout(()=>{
    if(Math.random() > 0.5) //resolve or reject on 50% probability
      resolve('this value to the handler');
    else
      reject('uh oh! there is an error');
  },2000);
});

现在,如果您在.then()上附加.catch()a。上面的setTimeout将值传递给我们提供的resolve和拒绝回调。

因此,将resolvereject视为提供给执行者以与原始诺言处理程序进行回传的一些值。