【问题标题】:gulp 4 async awaitgulp 4 异步等待
【发布时间】:2020-06-30 20:22:10
【问题描述】:

你能帮帮我吗?我正在尝试创建一个 gulp 任务,在构建我的代码后,它将尝试将所有内容保存到共享点。我在我的承诺中添加了等待,让它在继续之前先等待完成,但它不会等待并尝试在我的构建中保存文件,但它还没有完成。

gulp.task('build', async function() {
  //BUILD FILES
  await new Promise(resolve => {
    run('npm run build')
      .exec()
      .pipe(gulp.dest('output/run'));
    resolve();
  });
  //AFTER BUILD IT WILL TRY TO SAVE Build folder files to sharepoint
  gulp.src(['./build/**']).pipe(
    spsave(
      {
        siteUrl: siteUrl,
        folder: folderUrl,
        flatten: false
      },
      cred.account
    )
  );
  notify('Process Done 2!');
});

【问题讨论】:

    标签: npm gulp


    【解决方案1】:

    我能够弄清楚。我在管道的末尾添加了一个 on 并且我称之为我的解决方案

    gulp.task('build', async function() {
      await new Promise(resolve => {
        run('npm run build')
          .exec()
          .pipe(gulp.dest('output/run'))
          .on('end', resolve);
      });
      gulp.src(['./build/**']).pipe(
        spsave(
          {
            siteUrl: siteUrl,
            folder: folderUrl,
            flatten: false
          },
          cred.account
        )
      );
      notify('Process Done 2!');
    });
    

    【讨论】:

      【解决方案2】:

      将部分代码重写为:

      await new Promise(resolve => {
          run('npm run build')
            .exec()
            .pipe(gulp.dest('output/run'));
            .on('end', resolve);
        });
      

      意味着您等待来自管道的事件end,然后解决承诺。

      【讨论】:

        猜你喜欢
        • 2021-01-31
        • 2018-05-12
        • 2012-10-24
        • 1970-01-01
        • 2023-03-12
        • 2016-07-07
        • 2016-03-25
        • 2017-10-09
        相关资源
        最近更新 更多