鉴于下面的代码示例,行为是否存在差异,如果是,那么这些差异是什么?
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) 我有一个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) 如果可能的话,我想通过管道将两个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 会如何操作。例如:
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吗?或者它把一切都搞乱了?
我想要管道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
async-await ×1
asynchronous ×1
javascript ×1
pdftotext ×1
pipe ×1
promise ×1
stream ×1