gpt4 book ai didi

javascript - 链接 Promise 错误处理程序

转载 作者:行者123 更新时间:2023-11-28 08:25:51 25 4
gpt4 key购买 nike

请查看演示here

function get(url) {
return $http.get(url)
.then(function(d){
return d.data
},
function(err){ //will work without handling error here, but I need to do some processing here
//call gets here
//do some processing
return err
})
}

get('http://ip.jsontest.co')
.then(function(response){
$scope.response = "SUCCESS --" + JSON.stringify(response);
}, function(err){
$scope.response = "ERROR -- " + err;
})

我有一个库函数,get,它返回一个 promise 。我正在那里处理错误,并将其返回(我在其中评论了 //do someprocessing )。我期待在客户端中,它调用错误/失败处理程序。相反,它打印 "SUCCESS --"+ error

我可以使用 $qreject 来完成这项工作,但是有没有办法不用呢?

最佳答案

一般情况下:

  • 每当您从 Promise 处理程序返回时,您就在解析,指示正常流程继续。
  • 每当您向 Promise 处理程序抛出时,您就是在拒绝指示异常流。

在同步场景中,您的代码是:

function get(url){
try{
return $http.get(url);
} catch(err){
//handle err
}
}

如果想进一步传递,则需要重新抛出:

function get(url){
try{
return $http.get(url);
} catch(err){
//handle err
throw err;
}
}

Promise 就是这样:

function get(url){
return $http.get(url)
.then(function(d){
return d.data
},
function(err){ //will work without handling error here
//call gets here
//do some processing
throw err; // note the throw
})
};

或者使用更漂亮的语法:

function get(url){
return $http.get(url).catch(function(err){
// do some processing
throw err;
});
}

关于javascript - 链接 Promise 错误处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22415538/

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