Javascript 你能为承诺定义一个解析函数吗?

Javascript 你能为承诺定义一个解析函数吗?,javascript,Javascript,我正在加快兑现承诺的步伐,但有一件事我不明白 因此,我们定义了这样一个承诺: new Promise( /* executor */ function(resolve, reject) { ... } ); 我的印象是,resolve是一个在情况成功解决时应该调用的函数。所以我试着这样做: function resolve(number) { return number * 2; } var p = new Promise((resolve, reject) => { setT

我正在加快兑现承诺的步伐,但有一件事我不明白

因此,我们定义了这样一个承诺:

new Promise( /* executor */ function(resolve, reject) { ... } );
我的印象是,
resolve
是一个在情况成功解决时应该调用的函数。所以我试着这样做:

function resolve(number) {
  return number * 2;
}

var p = new Promise((resolve, reject) => {
  setTimeout(() => resolve(5), 1000);
});

p.then((doubledNumber) => {
  console.log(doubledNumber); // expected: 10, actual: 5
});
因此,
resolve
似乎不是通常意义上的函数,它更像是一个关键字,如
return
。换句话说,当我调用
resolve
时,我只是指示程序将作为参数提供的任何值传递给
resolve


我的理解正确吗?

那种理解不太正确。未使用您定义的
resolve
函数。调用
resolve(5)
时,您使用的是Promise构造函数作为参数提供的
resolve
函数名称
resolve
没有特殊含义
,您可以使用此参数所需的任何名称。例如,我们可以将它们称为
setValue
setError
,而不是
resolve
reject

var p = new Promise((setValue, setError) => {
  setTimeout(() => setValue(5), 1000);
});
您可以在这里看到,当您定义的名为
resolve
的函数被
resolve
的本地定义遮挡时,为什么没有使用该函数

Promise构造函数为您提供的
resolve()
函数仅由您调用,以向Promise提供值

如果要修改由承诺产生的值,则需要使用
应用筛选函数。然后(…)
(这将为您提供一个具有修改值的新承诺):


这种理解并不完全正确。未使用您定义的
resolve
函数。调用
resolve(5)
时,您使用的是Promise构造函数作为参数提供的
resolve
函数名称
resolve
没有特殊含义
,您可以使用此参数所需的任何名称。例如,我们可以将它们称为
setValue
setError
,而不是
resolve
reject

var p = new Promise((setValue, setError) => {
  setTimeout(() => setValue(5), 1000);
});
您可以在这里看到,当您定义的名为
resolve
的函数被
resolve
的本地定义遮挡时,为什么没有使用该函数

Promise构造函数为您提供的
resolve()
函数仅由您调用,以向Promise提供值

如果要修改由承诺产生的值,则需要使用
应用筛选函数。然后(…)
(这将为您提供一个具有修改值的新承诺):


好的,函数名被arg名遮挡的部分就是我点击的部分。所以为了“处理”返回值,我想我也可以定义函数,比如
function r(val){return val*2;}
,然后在承诺中调用它,比如
setTimeout(()=>resolve(r(5)),1000)
。好的,函数名被参数名隐藏的部分就是我点击的。为了“处理”返回值,我想我也可以定义函数,比如
function r(val){return val*2;}
,然后在承诺中调用它,比如
setTimeout(()=>resolve(r(5)),1000