相关疑难解决方法(0)

`return await promise`和`return promise`之间的区别

鉴于下面的代码示例,行为是否存在差异,如果是,那么这些差异是什么?

return await promise

async function delay1Second() {
  return (await delay(1000));
}
Run Code Online (Sandbox Code Playgroud)

return promise

async function delay1Second() {
  return delay(1000);
}
Run Code Online (Sandbox Code Playgroud)

据我了解,第一个会在异步函数中进行错误处理,并且错误会从异步函数的Promise中冒出来.但是,第二个需要少一个滴答.它是否正确?

此片段只是返回Promise以供参考的常用函数.

function delay(ms) {
  return new Promise((resolve) => {
    setTimeout(resolve, ms);
  });
}
Run Code Online (Sandbox Code Playgroud)

javascript async-await

65
推荐指数
5
解决办法
2万
查看次数

如何等待流完成管道?(的NodeJS)

我有一个for循环数组,所以我使用Promise.all来完成它们然后调用它们.

let promises = [];
promises.push(promise1);
promises.push(promise2);
promises.push(promise3);

Promise.all(promises).then((responses) => {
  for (let i = 0; i < promises.length; i++) {
    if (promise.property === something) {
      //do something
    } else {
      let file = fs.createWriteStream('./hello.pdf');
      let stream = responses[i].pipe(file);
      /*
         I WANT THE PIPING AND THE FOLLOWING CODE 
         TO RUN BEFORE NEXT ITERATION OF FOR LOOP
      */
      stream.on('finish', () => {
        //extract the text out of the pdf
        extract(filePath, {splitPages: false}, (err, text) => {
        if (err) {
          console.log(err);
        } …
Run Code Online (Sandbox Code Playgroud)

asynchronous pipe node.js promise pdftotext

28
推荐指数
4
解决办法
2万
查看次数

从两个管道流创建Node.js流

如果可能的话,我想通过管道将两个Node.js流组合成一个.我正在使用Transform流.

换句话说,我希望我的图书馆能够myStream让人们使用.例如,他们可以写:

process.stdin.pipe(myStream).pipe(process.stdout);
Run Code Online (Sandbox Code Playgroud)

在内部,我正在使用第三方vendorStream做一些工作,插入我自己的逻辑中myInternalStream.那么上面的内容将转化为:

process.stdin.pipe(vendorStream).pipe(myInternalStream).pipe(process.stdout);
Run Code Online (Sandbox Code Playgroud)

我可以这样做吗?我试过了,var myStream = vendorStream.pipe(myInternalStream)但显然不起作用.

换句话说bash,假设我想编写一个程序,检查字母h是否出现在某个stream(tail -n 1 | grep h)的最后一行,我可以创建一个shell脚本:

# myscript.sh
tail -n 1 | grep h
Run Code Online (Sandbox Code Playgroud)

如果人们这样做:

$ printf "abc\ndef\nghi" | . myscript.sh
Run Code Online (Sandbox Code Playgroud)

它只是有效.

这是我到目前为止:

// Combine a pipe of two streams into one stream

var util = require('util')
  , Transform = require('stream').Transform;

var chunks1 = [];
var stream1 = new Transform();
var soFar = '';
stream1._transform …
Run Code Online (Sandbox Code Playgroud)

node.js node.js-stream

18
推荐指数
1
解决办法
7455
查看次数

node.js - 将两个可读流写入同一个可写流

我想知道如果您同时将两个不同的读取流传输到同一目的地,node.js 会如何操作。例如:

var a = fs.createReadStream('a')
var b = fs.createReadStream('b')
var c = fs.createWriteStream('c')
a.pipe(c, {end:false})
b.pipe(c, {end:false})
Run Code Online (Sandbox Code Playgroud)

这是将a写入c,然后将b写入c吗?或者它把一切都搞乱了?

stream node.js

5
推荐指数
1
解决办法
2463
查看次数

为什么 fs.createReadStream 只管道一次?

我想要管道fs.createReadStream两次,代码在这里:

fs.createReadStream('pdf-sample1.pdf')
  .pipe(fs.createWriteStream('pdf-sample2.pdf'))
  .pipe(fs.createWriteStream('pdf-sample3.pdf'))
Run Code Online (Sandbox Code Playgroud)

但我遇到了一个错误:

Error: Cannot pipe. Not readable.
    at WriteStream.Writable.pipe (_stream_writable.js:162:22)
    at repl:1:86
    at REPLServer.defaultEval (repl.js:132:27)
    at bound (domain.js:254:14)
    at REPLServer.runBound [as eval] (domain.js:267:12)
    at REPLServer.<anonymous> (repl.js:279:12)
    at REPLServer.emit (events.js:107:17)
    at REPLServer.Interface._onLine (readline.js:214:10)
    at REPLServer.Interface._line (readline.js:553:8)
    at REPLServer.Interface._ttyWrite (readline.js:830:14)
Run Code Online (Sandbox Code Playgroud)

谁能告诉我原因?

node.js

4
推荐指数
1
解决办法
7787
查看次数