Joh*_*Doe 3 javascript promise
我无法解释为什么这段代码执行如下:
为什么loadData().then()在无处似乎无法解决的情况下被调用?
我意识到我可以通过在第一个catch中抛出错误来"修复"代码,以便最后/更高的catch会看到错误.但我想知道显然解析我的代码的人或者是谁,导致在这种情况下达到.then().
是不是在第一个被认为是resolve()的catch中重新抛出错误,因为这段代码暗示它是什么?
或者我在这里失踪的Promises的行为怎么样?
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");
});
Run Code Online (Sandbox Code Playgroud)
您正在捕获错误,这表示有意处理它.由于您不再"重新抛出"它,您的代码假定您以适当的方式处理它并且它不再是错误.
这与完全相同的行为try..catch.如果您catch输入错误并且不重新抛出它,则它下面的代码(或调用代码)将继续运行.
如果catch从loadDataPromise链中删除它,它将按预期工作.
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");
});Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
59 次 |
| 最近记录: |