Javascript Async await正在阻止其他函数运行
因此,我的两个函数位于各自的文件中,该应用程序由四个函数组成,所有函数都是异步等待的,首先它获取信息,然后安装,然后压缩信息,最后应该使用axios发布。实际上,从server.js执行每个操作,但在my axios函数的wait zipFunction()下没有运行任何操作,甚至连console.log()都没有。请帮忙 代码 AXIOS文件Javascript Async await正在阻止其他函数运行,javascript,node.js,Javascript,Node.js,因此,我的两个函数位于各自的文件中,该应用程序由四个函数组成,所有函数都是异步等待的,首先它获取信息,然后安装,然后压缩信息,最后应该使用axios发布。实际上,从server.js执行每个操作,但在my axios函数的wait zipFunction()下没有运行任何操作,甚至连console.log()都没有。请帮忙 代码 AXIOS文件 const axios = require("axios"); const fs = require('fs'); const p
const axios = require("axios");
const fs = require('fs');
const path = require('path')
const { pathToFileURL } = require("url");
const zippedFile = require('./archiver')
//Make POST
async function makeAxios(){
await zippedFile()
console.log("AXIOS!!!")
user = "";
pwd = "";
ZipPath = path.join(__dirname, '')
console.log(ZipPath)
axios({
method: 'POST',
url: "",
headers: {
'content-type': 'application/zip'
},
auth: {
username: user,
password: pwd
},
maxContentLength: Infinity,
maxBodyLength: Infinity,
data: fs.createReadStream(ZipPath),
});
}
module.exports = {makeAxios}
压缩文件
//Modules
const archiver = require("archiver");
const fs = require("fs");
//Locals
const packagedModules = require("./packagedModules");
const { branch } = require("./getRepo");
const path = require("path");
const { resolve } = require("path");
const archive = archiver("zip");
async function makeZip() {
await packagedModules();
const output = fs.createWriteStream(`${branch}.zip`);
return new Promise((resolve) => {
output.on(
"close",
function () {
console.log(archive.pointer() + " total bytes");
console.log(
"archiver has been finalized and the output file descriptor has closed."
);
},
archive.pipe(output),
archive.directory(
path.join(__dirname, ""),
false
),
archive.directory("subdir/", "new-subdir"),
archive.finalize()
);
});
}
module.exports = makeZip;
您通过
makeZip
返回的承诺永远不会得到解决或拒绝
创建新承诺时,您会收到两个参数:resolve
和reject
。
必须调用其中一个参数,否则您的承诺将永远无法完成
尝试在关闭回调函数中调用resolve()
返回新承诺((解析)=>{
output.on('close',function(){
解决();
});
});
阅读有关承诺的更多信息:您正在返回一个新的承诺,但从未调用
resolve
。您需要相应地调用resolve
和reject