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
。