Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么需要在javascript承诺中使用.then()方法?_Javascript_Es6 Promise - Fatal编程技术网

为什么需要在javascript承诺中使用.then()方法?

为什么需要在javascript承诺中使用.then()方法?,javascript,es6-promise,Javascript,Es6 Promise,Web开发和学习Javascript的新手 我一直在遵循一个关于承诺的教程,试图了解它们的用途以及它们的有用之处,我遇到了以下代码: var isMomHappy=true; //允诺 var willIGetNewPhone=新承诺( 功能(解析、拒绝){ 如果(我很高兴){ var电话={ 品牌:“三星”, 颜色:“黑色” }; 解决(电话); }否则{ var reason=新错误(“妈妈不高兴”); 拒绝(理由); } } ); //兑现我们的诺言 var askMom=函数(){ 威

Web开发和学习Javascript的新手

我一直在遵循一个关于承诺的教程,试图了解它们的用途以及它们的有用之处,我遇到了以下代码:

var isMomHappy=true;
//允诺
var willIGetNewPhone=新承诺(
功能(解析、拒绝){
如果(我很高兴){
var电话={
品牌:“三星”,
颜色:“黑色”
};
解决(电话);
}否则{
var reason=新错误(“妈妈不高兴”);
拒绝(理由);
}
}
);
//兑现我们的诺言
var askMom=函数(){
威利盖特新电话
.然后(功能完成){
//耶,你有一部新手机
控制台日志(已完成);
})
.catch(函数(错误){
//哦,妈妈,不要买
console.log(错误消息);
});
}
askMom()
然后方法返回一个允许方法链接的承诺

如果作为处理程序传递给的函数随后返回一个承诺,那么将向方法链中的后续成员公开一个等价的承诺

有关更多详细信息,请参见上的

用一个非常简单的术语(口语):

  • 去餐厅(承诺成功)
  • 然后,吃点点心
  • 如果你没有(承诺失败)
  • 那么,你就会错过享受

  • 你的例子并不代表这里的真实情况。承诺在处理需要首先加载的数据时非常有用

    这里是另一个例子(这仍然是胡言乱语,而不是100%你真正做的事情)

    const myPromise=新承诺((解析)=>{
    设置超时(
    ()=>解决(“你好,承诺”),
    1000
    );
    });
    然后((数据)=>console.log(数据));
    log('这是在之后调用的,但它是在承诺解决之前执行的')
    然后((result)=>{})
    请求将promissions值传递到函数中

    您的承诺示例有点糟糕,因此这里有一个更相关的示例

    const doingStuff=新承诺(函数(解析、拒绝){
    setTimeout(函数(){
    解决(“你好,世界”);
    }, 10000);
    });
    doingStuff.then(函数(结果){
    控制台日志(结果);
    });
    
    log(“在hello world之后”)语句
    将获得新电话
    什么都不做。
    .then()
    允许方法链接因为承诺是将来要发生的事情,
    那么它就发生了。否则,你还有什么其他方法可以修补未来将要发生的事情。
    我一直在关注一个关于承诺的教程
    这是什么教程?正如前面所指出的,这个例子毫无意义,我并不奇怪你没有抓住重点。关键是当您开始执行异步操作时,Promission会让您的生活更加轻松,与
    async/await
    一起使用时会更加轻松。
    为什么需要使用。然后()
    Promise链接对于了解,但这并不是为什么我们需要
    然后
    即使是一个已解决的承诺也需要
    然后
    。这很好地解释了这一点。因此,基本上是延迟,这意味着需要遵循的操作需要使用链接。否则,如果他们被放在承诺中,他们就不会等待回应了?因此,我下面的例子根本不能说明这一点!是的,没错。您还可以重新调用
    。然后根据相同的承诺重新调用
    ,并在不重新运行生成结果的函数的情况下再次获得结果。在我自己的代码中,我在这里使用了这个特性。也可以尝试在你的承诺中故意抛出一个错误,并与传统的回访链进行比较。承诺链提供了非常清晰的堆栈跟踪,使其对大型应用程序非常有用。