MeteorJS:在vzaar api上使用wrapAsync正确使用回调吗?

时间:2015-04-10 08:41:51

标签: javascript node.js asynchronous meteor callback

问题:

我尝试在完成上传视频后,将API(已上传的视频ID)async从API返回到我的代码。这是因为它返回undefined。这是来自vzaar的API文档的工作代码。

api.uploadAndProcessVideo(videopath,
  function (statusCode, data) {
    return data.id;
  }, {
    title: "my video",
    profile: 3
});

但是当我尝试将其包装在异步函数中时,我失败了。 应如何正确完成?

我没有运气就尝试了以下内容:

function getvideoid(videopath, callback) {

    api.uploadAndProcessVideo(videopath, callback, {
        title: "my video?",
        profile: 3
    });
};

var wrapped = Meteor.wrapAsync(getvideoid);

return wrapped(videopath);

编辑:与下面的代码稍微靠近,正确的ID现在显示在服务器控制台中,但仍然在客户端上返回undefined。我必须亲近有人知道吗?

    function getvideoid(videopath, callback) {

        api.uploadAndProcessVideo(videopath, callback, {
            title: "my video",
            profile: 3
        });

    };

    function status (statusCode, data) {
        console.log(data.id);
        return data.id;
    }

    var wrapped = Meteor.wrapAsync(getvideoid);

    return wrapped(videopath, status);

1 个答案:

答案 0 :(得分:0)

api.uploadAndProcessVideo是异步调用,您无法从异步回调中返回值。在这种情况下,您应该在传递给函数的回调中处理API响应。例如:

api.uploadAndProcessVideo(path, function(statusCode, data) {
 if (statusCode === 200) {
   var videoId = data.id;
   doSomething(videoId);
 }
})