我们知道 Promise 构造函数采用一个执行器函数,该函数有两个参数,我们用它们来生成成功案例或失败案例。今天我正在编程,我被卡住了,但后来我解决了这个问题,但我发现有一件事需要理解。
有什么区别
new Promise(resolve => {
// resolve
});
Run Code Online (Sandbox Code Playgroud)
和
new Promise((resolve,reject)=>{
// resolve
// reject
});
Run Code Online (Sandbox Code Playgroud)
我们可以这样做吗?
new Promise(resolve => {
// resolve
}, reject => {
// reject
});
Run Code Online (Sandbox Code Playgroud)
例子将更受赞赏。谢谢 !!!
这并不是特定于 Promise,而是特定于回调函数。
\n\nnew Promise((resolve) => {});1创建一个 Promise,其回调仅接受resolve参数。\xe2\x80\x99s 不可能调用否则提供的拒绝函数。2
new Promise((resolve, reject) => {});创建一个 Promise,其回调接受两个参数,包括用于拒绝的参数。
上面的两个示例演示了位置参数的工作原理。回调函数中的第一个参数始终是resolve函数,第二个参数始终是reject函数。
\n\nnew Promise((reject, resolve) => {});将创建一个 Promise,您可以在其中解决reject并拒绝resolve。
您可以throw在回调函数的范围内或resolve(Promise.reject())导致拒绝发生:
new Promise((resolve) => {\n throw new Error("42");\n // or `resolve(Promise.reject(new Error("42")));`\n})\n .catch(console.warn); // Prints warning \xe2\x80\x9cError: "42"\xe2\x80\x9d in the console.\nRun Code Online (Sandbox Code Playgroud)\n\n您不能使用new Promise((resolve) => {}, (reject) => {});,因为Promise构造函数只接受一个参数。第二个回调函数将被忽略。
1 :(resolve) => {}当然相当于resolve => {}. 但箭头函数参数实际上总是需要括号。简单参数和单个参数是唯一可以省略的例外。请参阅有关箭头函数语法的 MDN 文章。
2:使用常规函数,new Promise(function(resolve){});或者new Promise(function(){});您可以使用( resolve ) 或( reject )访问任何参数。arguments[0]arguments[1]
| 归档时间: |
|
| 查看次数: |
1706 次 |
| 最近记录: |