javascript - 我很奇怪 "Async"模块不能正常工作

标签 javascript node.js asynchronous google-drive-api

我想要

  1. 下载图像文件,然后
  2. 将图像文件上传到 Google 云端硬盘
<小时/>
var async = require('async');
var fileToUpload = require('./FileToUpload.js');

var fu;

async.waterfall([
    function (callback) {
        /*** At first, download image file ***/
        fu = new fileToUpload.FileToUpload('http://weed.cocolog-nifty.com/wzero3es/images/scrn0000_1.jpg');
        callback(null, fu);
    },
    function (arg, callback) {
        /*** Secondary, upload the image file to Google Drive ***/
        arg.uploadToGoogleDrive();
        callback(null, 'done');
    }
]);
  • 没有错误,并且
  • Google 的响应是文件上传成功
  • 在 Google 云端硬盘中,有新文件
  • 但数据已损坏,因此我无法打开图像

另外,分别下载和上传,没有问题。我可以在 Google 云端硬盘中打开上传的图片。

最佳答案

将回调传递给 FileToUpload 构造函数。

async.waterfall([
    function (callback) {
        /*** hand the async callback to the FileToUpload constructor ***/
        fu = new fileToUpload.FileToUpload('http://xxx/sample.jpg', callback);
    },
    ...

并在 FileToUpload 构造函数中调用回调。

// FileToUpload.js

        ...

        file.on('finish', function () {
            file.close(function () {
                callback(null, _this); /*** callback for async ***/
            });
        });

        ...

感谢@bagz_man 的宝贵建议。

关于javascript - 我很奇怪 "Async"模块不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27598906/

相关文章:

node.js - +process 中的加号是 Node.js 域文档中的拼写错误吗?

javascript - 将 s3 存储桶策略从 node.js 中的 JSON 转换为 base64

javascript - while 循环和回调返回不同的结果

javascript - promise 错过明白

javascript - 带字符串的行的行长度

javascript - 根据angularjs中的当前日期传递启用和禁用按钮

javascript - popup.js 中的 Chrome 扩展 POST 异步请求

Java Jetty WebSocket 服务器 : Handle broadcasts with asynchronously disconnecting clients

php - 一个字段,几个按钮

javascript - 更改 PIXI.js 中的默认光标样式