Javascript JS promise没有打电话就被叫到了

Javascript JS promise没有打电话就被叫到了,javascript,es6-promise,Javascript,Es6 Promise,我不知道为什么ispromise1一直被呼叫,尽管我从未试图解决它 function successCallback() { console.log("doSomething func succeeded with sucess"); } function failur

我不知道为什么is
promise1
一直被呼叫,尽管我从未试图解决它

                    function successCallback() {
                        console.log("doSomething func succeeded with sucess");
                    }
                    
                    function failureCallback() {
                        console.log("doSomething func failed with error");
                    }

                    let promis1 = new Promise((res, rej) => {
                    setTimeout(() => {
                        console.log(`Finally got called`);
                        return res(successCallback());
                    }, 5000);
                    });
    
                    function promise2(value) {
                    return new Promise((res, rej) => {
                        console.log(`This is getting called for some reason ${value}`)
                        return res(failureCallback());
                    });
                    }

                    Promise.resolve("6").then(promise2(6));
下面是我得到的输出:

这是因为某些原因而被呼叫的

doSomething func失败,出现错误

终于接到电话了

doSomething func成功了

[完成]在5.525秒内退出,代码为0


如果这是更大计划的一部分。将允诺1=新允诺((res,rej)=>{更改为允诺1=新允诺((res,rej)=>{


提示:如果这是一个更大的程序的一部分,请拼写单词“promise”

。将
let promis1=新的promise((res,rej)=>{
更改为let
promise1=新的promise((res,rej)=>{


提示:单词“promise”的拼写传递给
新promise
的函数由promise构造函数立即同步调用(与setTimeout不同),并与
新promise
位于同一堆栈上

如果传递给它的函数抛出,则会导致拒绝的承诺:

console.log(1);
常数p=新的承诺(
(res,rej)=>{
控制台日志(2);
res();
}
);
p、 然后(
()=>console.log(7)
);
控制台日志(3);
控制台日志(4);
const p2=新承诺(
(res,rej)=>{
控制台日志(5);
抛出(“错误”);
}
);
捕捉(
()=>console.log(8)
);

console.log(6);
传递给
new Promise
的函数由Promise构造函数立即同步调用(与setTimeout不同),并与
new Promise
位于同一堆栈上

如果传递给它的函数抛出,则会导致拒绝的承诺:

console.log(1);
常数p=新的承诺(
(res,rej)=>{
控制台日志(2);
res();
}
);
p、 然后(
()=>console.log(7)
);
控制台日志(3);
控制台日志(4);
const p2=新承诺(
(res,rej)=>{
控制台日志(5);
抛出(“错误”);
}
);
捕捉(
()=>console.log(8)
);

console.log(6);
也许这将向您显示代码的流程

setTimeout(()=>console.log(9));//9将在下面的所有“同步”代码完成后记录
控制台日志(1);
let promis1=新承诺((res,rej)=>{
控制台日志(2);
设置超时(()=>{
控制台日志(10);
返回res(“已解决1”);
}, 5000);
});
控制台日志(3);
功能承诺书2(价值){
控制台日志(5);
返回新承诺((res,rej)=>{
控制台日志(6);
返回res(“已解决2”);
});
}
控制台日志(4);
承诺2()。然后(()=>{
控制台日志(8);
});

console.log(7);
也许这将向您显示代码的流程

setTimeout(()=>console.log(9));//9将在下面的所有“同步”代码完成后记录
控制台日志(1);
let promis1=新承诺((res,rej)=>{
控制台日志(2);
设置超时(()=>{
控制台日志(10);
返回res(“已解决1”);
}, 5000);
});
控制台日志(3);
功能承诺书2(价值){
控制台日志(5);
返回新承诺((res,rej)=>{
控制台日志(6);
返回res(“已解决2”);
});
}
控制台日志(4);
承诺2()。然后(()=>{
控制台日志(8);
});

console.log(7);
因为是?
让promis1=newpromise((res,rej)=>{
…看到这个函数了吗?(从
(res,rej)=>
开始)它作为Promise构造函数的一部分被调用,这意味着什么?你正在执行回调,而不是将它们作为参数使用,所以它们总是会执行(
failureCallback()
vs
failureCallback
)。什么是
Promise.resolve
在那里做什么。@Jorg我只是在修修补补,以完全理解承诺。我很难学习承诺,所以一点一点地理解它,引入奇怪而复杂的方法是帮助我理解承诺是如何工作的。在这种情况下,从做
rej(failureCallback)开始
res(successCallback)
。因为是?
让promis1=newpromise((res,rej)=>{
…看到那个函数了吗?(从
(res,rej)开始)=>
它作为承诺构造函数的一部分被调用这意味着要完成什么?您正在执行回调,而不是将它们用作参数,因此它们将始终执行(
failureCallback()
vs
failureCallback
)。什么是
Promise.resolve
在那里做什么。@Jorg我只是在修修补补,以完全理解承诺。我很难学习承诺,所以一点一点地理解它,引入奇怪而复杂的方法是帮助我理解承诺是如何工作的。在这种情况下,从做
rej(failureCallback)开始
res(successCallback)
。变量的名称如何更改新承诺构造函数的操作?提示:它没有。提示2:可能是此处发布的代码中的键入错误,而不是实际代码本身(promise1未定义)变量的名称如何改变新承诺构造函数的操作?提示:它没有。提示2:可能是此处发布的代码中的输入错误,而不是实际代码本身(promise1未定义)谢谢,你能解释一下为什么promis1会被调用吗?可能是因为我来自C,而C触发函数的方式只有在main()中才有让我误解了nodebe,因为你在
newpromise
的参数中提供的构造函数被同步调用,作为newpromise构造的一部分,-@HMR的类似回答解释了这一点,-我原以为console.log的顺序会使程序流变得非常明显。谢谢,你能解释一下吗为什么会调用promis1?可能是因为我来自C,而C触发函数的方式只有在main()中找到时才有效让我误解了nodebe,因为在
newpromise
的参数中提供的构造函数被同步调用,作为newpromise构造的一部分,@HMR的类似回答解释了这一点,我认为consol