Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 删除承诺并使其异步_Node.js - Fatal编程技术网

Node.js 删除承诺并使其异步

Node.js 删除承诺并使其异步,node.js,Node.js,我试图让这个函数等待压缩完成。但是,异步版本不起作用。但承诺版本是正确的。我错过了什么 这是我的工作 const unzipFile = (element) => { var csvName = element.slice(0, -3); console.log(appRoot + "\\" + csvName); return new Promise((resolve, reject) => { gunzip(appRoot + "\\" + element,

我试图让这个函数等待压缩完成。但是,异步版本不起作用。但承诺版本是正确的。我错过了什么

这是我的工作

const unzipFile = (element) => {
  var csvName = element.slice(0, -3);
  console.log(appRoot + "\\" + csvName);
  return new Promise((resolve, reject) => {
    gunzip(appRoot + "\\" + element, appRoot + "\\csv\\" + csvName, () => {
      console.log("gunzip done!");
      resolve();
    });
  });
};
这是行不通的

const unzipFile = async (element) => {
  var csvName = element.slice(0, -3);
  console.log(appRoot + "\\" + csvName);

    const result = await gunzip(appRoot + "\\" + element, appRoot + "\\csv\\" + csvName)
      console.log("gunzip done!", result);
      return result;
};

如评论所述。gunzip文件不支持承诺。然而,Promisify将修复该问题,并使使用async/await成为可能

const util = require('util'); //Promisify
const gunzip = require("gunzip-file");

const promiseGunzip = util.promisify(gunzip);

const unzipFile = async (element) => {
  var csvName = element.slice(0, -3);
  console.log(appRoot + "\\" + csvName);
//Use promise version instead
  const result = await promiseGunzip(appRoot + "\\" + element, appRoot + "\\csv\\" + csvName)
  console.log("gunzip done!");
  return result;
};

wait
等待承诺,而不是回电你的问题有一个很好的开始:它包括你尝试了什么,成功了什么,失败了什么。唯一缺少的是您用于
gunzip
的确切软件包及其版本。根据这一点,库可以“在不传递回调的情况下支持承诺”,也可以不支持。制作一个版本的
gunzip
,以便您可以像bambam提到的那样等待它。