我目前正在使用Javascript解构数组,我想在其他函数中访问这些变量,但是目前,我正在努力寻找解决方法。
我尝试过调用该函数,然后调用console.log(thermostatArray)
->我认为这返回了待处理的诺言
我尝试调用该函数并等待它,然后console.log thermostatArray
。
dataFormat()能够正确查看日志并使用该数组,但是heatCallCheck()不能,并且我还没有看到解决问题的方法。
var express = require("express");
var router = express.Router();
const multer = require("multer");
var Excel = require("exceljs");
const index = require("../routes/index");
const workbook = new Excel.Workbook();
async function convertFile(workbook) {
csvWorkbook = workbook.csv.readFile("./uploads/uploadedFile.csv");
await csvWorkbook.then(async function(csvWorkbook) {
const worksheet = workbook.getWorksheet("sheet1");
try {
// await dataFormat(worksheet);
await heatCallCheck(worksheet,)
} catch (err) {
console.log(err);
}
await workbook.xlsx.writeFile("./uploads/convertedFile.xlsx").then(() => {
console.log("converted file written");
});
});
}
async function dataFormat(worksheet) {
let thermostatArray = []
await csvWorkbook.then(async function(worksheet) {
const serialNum = worksheet.getCell("D1").value;
const thermostatName = worksheet.getCell("D2").value;
const startDate = worksheet.getCell("D3").value;
const endDate = worksheet.getCell("D4").value;
const thermostat = worksheet.eachRow({includeEmpty: true}, function(row,rowNumber){
if (rowNumber > 6) {
thermostatArray.push(row.values)
}
})
console.log(`${thermostatArray[5]} Array Sample from dataFormat` )
console.log(`${thermostatArray[6]} Array Sample from dataFormat` )
return thermostatArray
})}
async function heatCallCheck(worksheet,thermostatArray) {
let test = await dataFormat(worksheet).then(thermostatArray => {
return thermostatArray[5]
}).catch(err => {
console.error(err)
})
console.log(`${test} result `)
}
在这种情况下,我的预期结果是,我可以使用heatCallCheck()函数看到恒温器数组中的第4个元素。
我认为在.then被调用之后我将能够访问它。
我的理解是.then(thermostatArray =>
使该数组成为返回值。
答案 0 :(得分:0)
您这样做:
async function someFunction() {
const myResultFromAPromise = await functionThatReturnsAPromise();
// ....do some stuff
return myResultFromAPromise;
}
OR
function someFunction() {
return functionThatReturnsAPromise().then(function(myResultFromAPromise) {
// ...do some stuff
return myResultFromAPromise;
});
}
但是不要两者都做,这简直令人困惑。
编辑:正如评论者所指出的,您可以等待任何事情,但是从您的代码中可以很明显地看出,您对async/await
的观点感到很困惑