当promise返回成功或失败时调用函数



假设我的代码设置如下:

App1.js

function doStuff() {
axios.get("/api/endpoint").then(response => {
// do App1.js-specific stuff
}).catch(error => {
// do App1.js-specific error handling
});
}

App2.js

function invokeStuff(){
doStuff();
}
function doSomethingOnSuccess(){...}
function doSomethingOnFailure(){...}

在App2.js中,我希望能够在App1的axios调用返回时立即调用doSomethingOnSuccess((或doSometingOnFailure((。假设这两个函数不能移动到App1.js中,我如何构建代码来实现这一点?

如果您不能完全处理doStuff内部的错误,您应该重新抛出它(或抛出一个新的错误(:

function doStuff() {
return axios.get("/api/endpoint").then(response => {
// do App1.js-specific stuff
}).catch(error => {
// do App1.js-specific error handling
throw error; // rethrow
});
}

App2.js:

function invokeStuff(){
doStuff().then(doSomethingOnSuccess, doSomethingOnFailue);
}
function doSomethingOnSuccess(){...}
function doSomethingOnFailure(){...}

让doStuff返回promise,然后使用该promise链接其他.then调用。你在doStuff中有一个陷阱,所以它将在处理错误方面获得第一次机会。如果有任何事情你无法处理,你可以重新进行

function doStuff() {
return axios.get("/api/endpoint").then(response => {
// do App1.js-specific stuff
}).catch(error => {
// do App1.js-specific error handling
return Promise.reject(error); // if not handled
});
}
//...
function invokeStuff(){
doStuff()
.then(doSomethingOnSuccess)
.catch(doSomethingOnFailure)
}

最新更新