2

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

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(() => {})

    }))

}

出于某种原因,当承诺解决并且我尝试调用回调时,我在下游没有得到任何东西,并且流永远不会完成。

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

4

1 回答 1

2

因此,在通过其他 gulp util repos 进行一些搜索后,我发现这是正确解决回调的方法:

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(() => {})

}))
于 2017-12-05T19:44:20.527 回答