javascript – 如何在我的应用程序中保证一次性使用gulp?

前端之家收集整理的这篇文章主要介绍了javascript – 如何在我的应用程序中保证一次性使用gulp?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
作为我写的小程序的一部分,我想使用gulp将大量文件转换为markdown.这不是与程序分离的构建步骤的一部分.这是程序的一部分.所以我没有使用gulpfile来处理这个.

问题是,由于它是异步的,我想使用一个承诺,当gulp任务完成时会提醒我.

这样的事情是理想的:

io.convertSrc = function() {
  var def = q.defer();

  gulp.src(src + '/*.md')
    .pipe(marked({}))
    .pipe(gulp.dest(dist),function() {
      def.resolve('We are done!');
    });

    return def.promise;
}

但管道不采取回调.我该怎么处理这个?感谢您的帮助,我有点新鲜的吞咽.

解决方法

gulp中的所有内容都是流,所以您只需听取结束和错误事件.
io.convertSrc = function() {
  var def = q.defer();
  gulp.src(src + '/*.md')
    .pipe(marked({}))
    .pipe(gulp.dest(dist))
    .on('end',function() {
      def.resolve();
    })
    .on('error',def.reject);
  return def.promise;
}

除此之外,Q 1.0不再开发(除了这里和那里的几个修复之外),与Q 2.0完全不兼容;我建议Bluebird替代.

另外值得一提的是,NodeJS 0.12之后,它内置了ES6承诺(不需要调和标志),所以如果你不想向后兼容,你可以直接使用它们.

io.convertSrc = function() {
  return new Promise(function(resolve,reject) {
    gulp.src(src + '/*.md')
      .pipe(marked({}))
      .pipe(gulp.dest(dist))
      .on('end',resolve)
      .on('error',reject);
  });
};

猜你在找的JavaScript相关文章