node.js - Gulp Stream 完成并带有 promise

标签 node.js gulp node-streams

我正在尝试读入文件,进行基于 promise 的转换并将结果推送到流中。这是示例代码。

const gulp = require('gulp')
const gutil = require('gulp-util')
const through2 = require('through2')
const fs = require('fs')

module.exports = (filePath, options) => {

    return gulp.src(filePath)
    .pipe(through2.obj(function (file, enc, cb) {
        const result = file.contents.toString(enc)
        Promise.resolve(result)
        .then( result => {
            cb(null, result)
        })
        .catch(() => {})

    }))

}

出于某种原因,当 promise 解决并且我尝试调用回调时,我在下游什么也得不到,并且流永远不会完成。

我也尝试过 this.push(result) 然后调用回调,但仍然是同样的问题。任何帮助将不胜感激

最佳答案

因此,在搜索其他 gulp util 存储库后,我发现这是正确解决回调的方法:

return gulp.src(filePath)
 .pipe(through2.obj(function (file, enc, cb) {
    const result = file.contents.toString(enc)
    Promise.resolve(result)
    .then( result => {
        file.contents = new Buffer(result);
        this.push(file)
        cb()
    })
    .catch(() => {})

}))

关于node.js - Gulp Stream 完成并带有 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47661288/

相关文章:

node.js - 如何在angular 2项目中使用 "regression-js"

node.js - Mongoose 不同并填充文档

node.js - 为什么尝试写入大文件会导致 js 堆内存不足

node.js - Buffer.toString ('base64' 创建了哪种 base64 编码变体)?

javascript - 如何在公牛队列中收听已完成的事件 - 仅适用于当前工作

javascript - gulp 通知发生在任务完成之前

javascript - "TypeError: Cannot read property ' 运行 Gulp 时映射 ' of undefined"

node.js - Docker Compose w/Gulp - 找不到本地 gulp

node.js - 在 node.js 中正确使用 _writev

node.js - 错误 [ERR_STREAM_PREMATURE_CLOSE] : Premature close in Node Pipeline stream