“与”的区别是什么;然后用“block”;及;然后是handler“;在javascript中承诺?

“与”的区别是什么;然后用“block”;及;然后是handler“;在javascript中承诺?,javascript,promise,ecma,Javascript,Promise,Ecma,在本文档中的javascript承诺文档中。上面写着: 使用已解决的承诺,“then”块将立即触发, 但它的处理程序将异步触发 我不太明白它说的块将被触发的部分,但是处理程序是异步触发的。我的问题是: 那么街区是什么?它的处理程序是什么?它们有什么区别 是什么触发了它们 当异步触发器发生时,它终究会被解决 多谢各位 那句话有点让人困惑,下面是我试图解释它的意思。如果我在什么地方弄错了,请不要犹豫向我扔石头:) .then()方法返回一个承诺。我认为通过可以立即触发'then'块,这意味着.the

在本文档中的javascript承诺文档中。上面写着:

使用已解决的承诺,“then”块将立即触发, 但它的处理程序将异步触发

我不太明白它说的块将被触发的部分,但是处理程序是异步触发的。我的问题是:

  • 那么街区是什么?它的处理程序是什么?它们有什么区别

  • 是什么触发了它们

  • 当异步触发器发生时,它终究会被解决

  • 多谢各位

    那句话有点让人困惑,下面是我试图解释它的意思。如果我在什么地方弄错了,请不要犹豫向我扔石头:)

    .then()
    方法返回一个承诺。我认为通过
    可以立即触发'then'块
    ,这意味着
    .then
    方法将在事件循环的当前运行中运行,并将立即返回承诺。但是,传递给
    then
    方法的回调将异步执行,即在事件循环的下一次运行中执行

    因此,在该示例中,记录的第一行是

    PromiseStatus{[[PromiseStatus]]:“待定”,“PromiseValue]]:未定义}

    因为:

    var thenProm = resolvedProm.then(function(value){
        console.log("this gets called after the end of the main stack. the value 
        received and returned is: " + value);
        return value; });
    
    运行并返回承诺,但返回值的回调尚未执行,因此该值未定义

    事件循环运行完成后,下一个循环开始并执行回调。此回调将值分配给承诺并记录此行:

    “这在主堆栈结束后被调用。收到的值 返回的是:33“

    最后,将使用新分配的值记录承诺本身:

    承诺{[[PromiseStatus]]:“已解决”,[[PromiseValue]]:33}

    要更直接地回答您的问题,请执行以下操作:

  • Then
    是一种基于Promise的方法,它接受一个回调函数并返回另一个Promise。当原始承诺得到解决时,该函数将被激发
  • 当原始承诺被解析或拒绝时,这将触发在“then”方法中传递的回调函数。没有任何东西会“触发”
    。然后()
    方法本身,它只是一个方法
  • 承诺的解析是触发回调的原因 正如@Bergi所说,混淆的一个主要来源可能是单词“block”,在这里可能只是指“
    方法调用中的代码块”

  • 然后block是Promise对象的方法,用于注册回调,如果Promise实现或拒绝,将调用回调
  • 当您创建承诺实例时,第一个触发器会及时触发。当承诺将被解决或拒绝时,将调用处理程序

  • 是的,那句话毫无意义。它是在本次编辑中引入的:我在链接中没有发现任何内容,也不知道什么是“then block/handler”,但根据我对Promission的经验,我可以告诉您,
    then
    中使用的代码会在Promission得到解决时立即执行,但会从主堆栈异步执行。在编写代码时,您永远不应该按照异步操作的顺序来进行。“块”没有任何意义,这个术语的含义是其他的。我只能假设这句话的意思是“包含
    then()
    调用的代码块会立即执行”。@Bergi是的,这是一个很好的观点,如果你不介意的话,我会将这一行添加到我的答案中?@redFur当然,继续
    var thenProm = resolvedProm.then(function(value){
        console.log("this gets called after the end of the main stack. the value 
        received and returned is: " + value);
        return value; });