【问题标题】:Gulp Stream completion with promises使用 Promise 完成 Gulp Stream
【发布时间】:2018-05-19 13:36:17
【问题描述】:

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

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) 然后调用回调但仍然是同样的问题。任何帮助将不胜感激

【问题讨论】:

    标签: node.js gulp node-streams


    【解决方案1】:

    所以在搜索了其他 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(() => {})
    
    }))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-18
      • 2016-07-08
      • 2019-01-28
      • 1970-01-01
      • 1970-01-01
      • 2016-07-04
      • 2014-08-20
      • 1970-01-01
      相关资源
      最近更新 更多