首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么渔获物表现得像个决心?

为什么渔获物表现得像个决心?
EN

Stack Overflow用户
提问于 2018-08-15 21:23:55
回答 1查看 63关注 0票数 3

我无法理解为什么这段代码执行如下:

  1. “无法到达服务器”
  2. “成功:数据已加载”

为什么loadData().then()在任何地方似乎都没有出现解决时就会被调用?

我意识到我可以通过在第一个捕获中抛出错误来“修复”代码,这样最后/更高的捕获将看到错误。但是,我想知道是谁或什么负责解析我的代码,导致在这个场景中到达.then()。

是否像这段代码所暗示的那样,重新抛出第一个捕获中的错误是否被认为是一个解析()?

或者说我在这里错过了承诺的行为?

代码语言:javascript
复制
function doGoogleRequest(){
    return new Promise(function(resolve, reject){
        reject("Could not reach server.");
    });
}

function loadData(){
    return doGoogleRequest()
        .then(function(data){
            return data;
        }).catch(function(err){
            console.error(err);
        });
}

loadData()
  .then(function(){
    console.log("Success: Data has been loaded.");
}).catch(function(err){
    console.log("Error: could not load data");
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-15 21:30:43

您正在捕获错误,这表明了处理它的意图。由于您不再“重新抛出”它,所以您的代码假设您以适当的方式处理它,并且它不再是一个错误。

这与try..catch的行为完全相同。如果您catch一个错误,而不是重新抛出它,下面的代码(或调用代码)继续运行。

如果您将catch从您的loadData承诺链中删除,它将按预期工作。

代码语言:javascript
复制
function doGoogleRequest(){
    return new Promise(function(resolve, reject){
        reject("Could not reach server.");
    });
}

function loadData(){
    return doGoogleRequest()
        .then(function(data){
            return data;
        });
}

loadData()
  .then(function(){
    console.log("Success: Data has been loaded.");
}).catch(function(err){
    console.log("Error: could not load data");
});

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51866635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档