等#man文件上的busboy完成后才能调用#finmplete

时间:2016-03-04 15:57:47

标签: javascript jquery ajax node.js asynchronous

好吧,我有这个:

req.busboy.on('file', function (fieldname, file, filename, encoding, mimetype) {
    core.upload(filename, file, function(key2) {
        if (key2 != null) {
            key = key2;
        }
        console.log("KEY SET");
        file.resume();
    });
});

完成功能:

req.busboy.on('finish', function () {
    console.log("FINISH FIRE");
}

我遇到的问题是FINISH FIRE首先触发,并且仅在上传KEY SET之后触发,我无法在设置数据时嵌套函数:

req.busboy.on('field', function (key, value, keyTruncated, valueTruncated) {
    //setting data
}

所以有这个:

req.busboy.on('file', function (fieldname, file, filename, encoding, mimetype) {
    core.upload(filename, file, function(key2) {
        if (key2 != null) {
            key = key2;
        }
        file.resume();
        runFinishFunction();
    });
});

不会真的有效,因为我不知道#field是否已经完成。

1 个答案:

答案 0 :(得分:0)

你有一个像这样的函数和变量

var finishOne, FinishTwo

finish(finish1, finish2) {
     if (finishOne != true && finish1 != null) finishOne = finish1;
     if (finishTwo != true && finish2 != null) finishTwo = finish2;
     if (finishOne && FinishTwo) {
         //RUN CODE
     }
}

然后你可以在方法中使用它并使用:

调用它
finish(true, null) And the other one with finish(null, true)

它看起来不是一个好的解决方案,所以欢迎更好的解决方案