【发布时间】:2020-07-03 05:52:26
【问题描述】:
我在模块中定义了一个函数,该函数应该执行获取并返回响应。我无法从 fetch 返回响应。调用函数获取的返回值为“未定义”。
我是 JavaScript 和 Node 的新手,所以如果你不介意的话,可能需要一点帮助。
调用函数
async function executeTest() {
try {
const response = await bpc.postLendingApplication(
blendConnection,
loanData
);
console.log("Response from POST Loan: ", response);
} catch (error) {
console.log(error);
}
}
执行获取请求的模块函数
const fetch = require("node-fetch");
async function postLendingApplication(connection, data) {
console.log("Processing POST Loan.");
await fetch(connection.url, {
method: "POST",
headers: connection.headers,
body: data,
}).then(async res => {
console.log("Status: ", res.status);
console.log("StatusText: ", res.statusText);
console.log("OK: ", res.ok);
return await res;
});
}
控制台输出为:
Processing POST Loan.
Status: 200
StatusText: OK
OK: true
Response from POST Loan: undefined
如您所见,提取完成了它应该做的事情,如果我在模块方法中记录 res.json(),它会打印有效负载。但我想从 fetch 中返回错误和响应,以便模块表现为通用方法,并且在调用方法中完成处理和错误处理。
【问题讨论】:
-
在
then中不需要async/await。 -
在您的情况下,您应该返回
Promise或以其他方式重写您的函数。 -
@DaniyalLukmanov 不。
async function自动返回一个承诺。你的返回值就是它的分辨率。 -
@Chance 你没明白我的意思。
标签: javascript node.js async-await fetch node-fetch