繁体   English   中英

如何重新格式化 resolve/promise.all 的 output?

[英]How to reformat output of resolve/promise.all?

我想帮助重新格式化从 promise.all 返回的 output,它作为对象数组返回,但我只想转换为一串值,结果串在一起,每个结果之间有一个空格。

当前 output

[
  { yesnon: 'non' },
  { yesnon: 'yes' },
  { yesnon: 'yes' },
  { yesnon: 'yes' },
  { yesnon: 'yes' },
  { yesnon: 'yes' },
  { yesnon: 'yes' },
  { yesnon: 'yes' }
]

目标 Output:(结果之间有空格的单行字符串,删除“yesnon:”)

non yes yes

编码

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


  var mynumtosearch = 56700;
var searchfile = 35;


const p1 = new Promise((resolve, reject) => {
  let lineCount = 0;
  
  let v=0;
let yesnon = "non";

 let readStream = readline.createInterface({
            input: fs.createReadStream('PATH TO MY FILE','utf8')
        });
  
    
  readStream.on("line", (line) => {
      lineCount++;
     // console.log(line)
if(line==mynumtosearch)
{
yesnon="yes";
console.log("I am here");
v++;
}
      
    });
    
    readStream.on("close", () =>
      resolve({
       yesnon
      }) 
  
  )
  
});
const p2 = new Promise((resolve, reject) => {

 let readStream = readline.createInterface({
            input: fs.createReadStream('PATH TO MY FILE','utf8')
        });

 let lineCount = 0;  let v=0;
let yesnon = "non";

  readStream.on("line", (line) => {
      lineCount++;
   //   console.log(line)
if(line==mynumtosearch)
{
yesnon="yes";
console.log("I am here");
v++;
}
      
    });
  
    readStream.on("close", () =>
      resolve({
   yesnon
      }) )
  
  
});
const p3 = new Promise((resolve, reject) => {
 let lineCount = 0;  let v=0;
let yesnon = "non";

  let readStream = readline.createInterface({
            input: fs.createReadStream('PATH TO MY FILE','utf8')
        });

  readStream.on("line", (line) => {
      lineCount++;
      //console.log(line)

 if(line==mynumtosearch)
{
yesnon="yes";
console.log("I am here");
v++;
}     
    });
  

    readStream.on("close", () =>
      resolve({
      yesnon
      }) )
});

console.log(h);
Promise.all([p1, p2, p3]).then((results) => {console.log(results);


});

这将重新格式化 output 阵列:

 let arr = [ { yesnon: 'non' }, { yesnon: 'yes' }, { yesnon: 'yes' }, { yesnon: 'yes' }, { yesnon: 'yes' }, { yesnon: 'yes' }, { yesnon: 'yes' }, { yesnon: 'yes' } ]; let output = arr.map(e => e['yesnon']).join(' '); console.log(output);

在 collections 上使用操作时,这很简单。 .map()解构( {yesnon} )每个元素,仅提取yesnon (字符串)的值,并且连接连接由空格分隔的结果字符串。

 results = [ { yesnon: 'non' }, { yesnon: 'yes' }, { yesnon: 'yes' }, { yesnon: 'yes' }, { yesnon: 'yes' }, { yesnon: 'yes' }, { yesnon: 'yes' }, { yesnon: 'yes' } ] console.log(results.map( ({yesnon}) => yesnon).join(' '))

尝试在您的 Promise.all() 中使用 .map() 和 .join() 。然后结果

Promise.all([p1, p2, p3]).then((results) => {
  console.log(
    results.map(({ yesnon }) => yesnon).join(' ')
  );
});

首先,您将对象数组转换为具有值的字符串数组,然后将此字符串数组转换为值之间有空格的字符串

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM