gpt4 book ai didi

javascript - Promise((resolve,reject)=>{}) 和 Promise(resolve =>{}) 有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:39:35 28 4
gpt4 key购买 nike

正如我们所知,Promise 构造函数采用一个执行函数,该函数具有两个参数,我们使用它们来生成成功案例或失败案例。今天我在编程,我被卡住了,但后来我解决了这个问题,但我发现了一件事需要理解。

有什么区别

new Promise(resolve => {

// resolve

});

new Promise((resolve,reject)=>{

// resolve
// reject

});

我们可以这样做吗?

new Promise(resolve => {

// resolve

}, reject => {

// reject

});

例子会更受欢迎。谢谢!!!

最佳答案

这不是特定于 Promises,只是回调函数。

new Promise((resolve) => {});1 创建一个 Promise,其回调只接受 resolve 参数。无法调用本应提供的拒绝函数。2

new Promise((resolve, reject) => {}); 创建一个 Promise,其回调采用两个参数,包括用于拒绝的参数。

以上两个示例演示了位置参数的工作原理。回调函数中的第一个参数始终是 resolve 函数,第二个参数始终是 reject 函数。

new Promise((reject, resolve) => {}); 将创建一个 Promise,您可以在其中使用 reject 解决并使用 resolve< 拒绝.

您可以在回调函数的范围内throwresolve(Promise.reject()) 来导致拒绝发生:

new Promise((resolve) => {
throw new Error("42");
// or `resolve(Promise.reject(new Error("42")));`
})
.catch(console.warn); // Prints warning “Error: "42"” in the console.

您不能使用 new Promise((resolve) => {}, (reject) => {});,因为 Promise 构造函数只接受一个参数。第二个回调函数将被忽略。


1:(resolve) => {} 当然等同于 resolve => {}。但是箭头函数参数实际上总是需要括号。简单参数和单个参数是唯一的异常(exception),它们可以省略。查看MDN article about arrow function syntax .

2:使用常规函数,new Promise(function(resolve){});new Promise(function(){}); 你可以 access any argument使用 arguments[0](resolve)或 arguments[1](reject)。

关于javascript - Promise((resolve,reject)=>{}) 和 Promise(resolve =>{}) 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51826848/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com