MeteorJS:在带有回调的vzaar api上正确使用wrapAsync

MeteorJS: Properly use wrapAsync on vzaar api with callbacks?

本文关键字:wrapAsync api vzaar 回调 MeteorJS      更新时间:2023-09-26

问题:

当上传完一个视频后,我试图将一些东西(上传的视频ID)从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);

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

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