模块发送回api数据



我正在做一个模块,其中包含一个类,每次我们使用一个函数时都会调用一个api。

我想处理结果&catch IN模块,只返回数据。

function getAllFromTable(aTableName){
const request = {
.... aTableName
}
return apiCall(request)
}
function apiCall(requestConfig){
axios(requestConfig).then(result => {
return result.data
}
.catch(err => {
return err
}
}

这就是我想要做的但是这只会返回"undefined"..">

是否有一种方法可以在then()中返回来发送数据?或者另一种方式,只发送回数据而不发送Promise给调用函数的人&;getAllFromTable()&;

?

是否有一种方法可以在then()中返回以发回数据?或者另一种方式,只发送回数据而不发送Promise给调用函数的人&;getAllFromTable()&;

?

。在Javascript中,没有办法直接返回异步检索的结果。你必须使用异步机制,如承诺,回调或事件来通信回异步结果。因为你已经有了一个promise,你只需要返回这个promise,并确保它的解析值是你的最终结果。然后,调用者可以使用.then()await从承诺中获取结果。

这就是我想要做的想法但是当然这只会返回"未定义"…

在您的apiCall()函数中,您必须返回承诺并修复错误处理。

改变:

function apiCall(requestConfig){
axios(requestConfig).then(result => {
return result.data
}.catch(err => {
return err
});
}

:

function apiCall(requestConfig){
return axios(requestConfig).then(result => {
return result.data;
});
}

我删除了.catch(),因为您将承诺从拒绝更改为已解决,并使错误对象成为已解决的值。这不太可能是您想要的函数行为,也不太可能是调用者想要的。如果你想要一个.catch()来记录错误或其他什么,那么你可以再次抛出错误,以确保承诺保持被拒绝。

function apiCall(requestConfig){
return axios(requestConfig).then(result => {
return result.data;
}).catch(err => {
// log error and rethrow so the promise stays rejected
console.log(err);
throw err;
});
}

apiCall()的调用者将使用.then()await来获得函数返回的承诺的解析值。

apiCall(...).then(val => {
console.log(val);
}).catch(err => {
console.log(err);
});

最新更新