【问题标题】:How to write an alternate function of util.promisify in Node js? [duplicate]如何在 Node js 中编写 util.promisify 的替代函数? [复制]
【发布时间】:2020-02-16 11:11:28
【问题描述】:

我想探索 nodejs 中的 util.promisify。我下面的代码从文件中获取数据并打印 util.promisify 现在是注释。我开始编写自己的函数,类似于 promise,它等待来自 db 或 file 的数据,然后返回数据。但是我在 console.log 中得到的是空字符串而不是数据。

我是节点 js 的新手。我想在我从数据库中获取数据的重要项目中使用它。

const fs=require('fs');
const util=require('util');

function read(file){
    var str="";
    setTimeout(()=>{
        fs.readFile(file,(err,data)=>{
            str=data;
        })
    },2000);
    return new Promise((resolve,reject)=>{
        resolve(str);
    });
}



//const read=util.promisify(fs.readFile);

let promiseArr=[read('/promise/data1.txt'),read('/promise/data1.txt'),read('/promise/data1.txt')];

async function main(){
    let [data1,data2,data3]=await Promise.all(promiseArr);
    console.log(data1.toString());
    console.log(data2.toString());
    console.log(data3.toString());
}

main();

【问题讨论】:

  • 虽然不需要超时:function read(file) { return new Promise((resolve, reject) => fs.readFile(file, (err, data) => err ? reject(err) : resolve(data) ) ); }
  • 顺便说一句,在main 函数中创建promiseArr 会更好

标签: javascript node.js reactjs promise async-await


【解决方案1】:

关于 util.promisfy 工作原理的简单说明可以在这里找到:https://medium.com/@suyashmohan/util-promisify-in-node-js-v8-d07ef4ea8c53

function read(file) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      fs.readFile(file, (err, data) => {
        if (err) reject(err);
        resolve(data);
      });
    }, 2000);
  })
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-04
    • 2020-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    相关资源
    最近更新 更多