[英]Async-Await function returns undefined
我發現自己在異步函數中返回某個結果有些不方便,該函數內部有一個 await 請求。 我嘗試了 3 個庫(“ http ”、“ request ”、“ then-request ”),結果總是一樣。
主要思想是當ajax結束時,返回其結果; 但相反,它返回undefined (它不尊重 async/await )。
文件: index.server.js
const PyService = require("../../../api/services/PyService/validacionCSV");
module.exports = {
pasajeClientes: async function (matcheos) {
let resultado = await PyService.validate(matcheos);
return resultado;
}
}
文件: validacionCSV.js
const request = require('then-request');
module.exports = {
validate: async (matcheos) => {
var response;
await request("GET", `${process.env.API_URL}/validate`, {
json: {
csv: {
clients: "datosPersonas.csv",
products: "movimientos.csv"
},
primary_keys: {
clients: "ID",
products: "ID",
},
branches: {
products: "rama",
},
rules: {
clients: matcheos["clientes"],
products: matcheos["productos"],
}
}
}).done((resultado) => {
let matched = resultado.ok;
let no_relationships = resultado.no_relationships;
let repeated = resultado.repeated;
let total = resultado.total;
let type_errors = resultado.type_errors;
response = {
error: false,
message: "",
errorConTipoDatoClientes: type_errors.clients,
errorConTipoDatoProductos: type_errors.products,
errorConClientesSinProductos: no_relationships.clients,
errorConProductosSinCliente: no_relationships.productos,
errorConClientesRepetidos: repeated.clients,
errorConProductosRepetidos: repeated.products,
cantClientesOk: matched.clients,
cantProductosOk: matched.products,
cantClientesEnArchivo: total.clients,
cantProductosEnArchivo: total.products,
}
if (no_relationships.clients > 0 || no_relationships.products > 0
|| repeated.clients > 0 || repeated.products > 0
|| type_errors.clients > 0 || type_errors.products > 0
) {
response.error = true;
response.message = "Los clientes/productos importados poseen errores."
}
else
response.message = "Los clientes/productos importados no poseen errores."
});
return response;
}
}
您正在將 Promise 回調與 async/await 混合使用。 使用回調時,您不能在外部定義變量,然后在回調中實例化,然后再次嘗試在回調之外使用它。 閱讀更多關於 Promise 的信息。
我所做的只是在回調函數中返回response
。
嘗試這個
const request = require('then-request'); module.exports = { validate: async(matcheos) => { var response; await request("GET", `${process.env.API_URL}/validate`, { json: { csv: { clients: "datosPersonas.csv", products: "movimientos.csv" }, primary_keys: { clients: "ID", products: "ID", }, branches: { products: "rama", }, rules: { clients: matcheos["clientes"], products: matcheos["productos"], } } }).done((resultado) => { let matched = resultado.ok; let no_relationships = resultado.no_relationships; let repeated = resultado.repeated; let total = resultado.total; let type_errors = resultado.type_errors; response = { error: false, message: "", errorConTipoDatoClientes: type_errors.clients, errorConTipoDatoProductos: type_errors.products, errorConClientesSinProductos: no_relationships.clients, errorConProductosSinCliente: no_relationships.productos, errorConClientesRepetidos: repeated.clients, errorConProductosRepetidos: repeated.products, cantClientesOk: matched.clients, cantProductosOk: matched.products, cantClientesEnArchivo: total.clients, cantProductosEnArchivo: total.products, } if (no_relationships.clients > 0 || no_relationships.products > 0 || repeated.clients > 0 || repeated.products > 0 || type_errors.clients > 0 || type_errors.products > 0 ) { response.error = true; response.message = "Los clientes/productos importados poseen errores." } else response.message = "Los clientes/productos importados no poseen errores." return response }); } }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.