方法中的流星异步功能

时间:2016-01-27 15:46:26

标签: asynchronous meteor methods

我读到了有关这个问题的所有内容,我必须承认我还很遗失。

我有一个支付系统,需要执行HTTP POST查询来验证付款。

所以基本上这是我在服务器上的代码:

Payment.sendPayment = function(callback){
    HTTP.post(..., function(err, result){
        if(err) throw new Error('This is an error!');

        callback && callback(null);
    });
}

使用以下方法:

Meteor.methods({
    buy: function(){
        Payment.sendPayment(function(err){
            if(err) throw new Meteor.Error('buy', err);
        });
    }
});

由于返回不在main函数中,因此无效。我尝试使用wrapAsync:

Meteor.methods({
    buy: function(){
        var sendPayment = Meteor.wrapAsync(Payment.sendPayment);

        console.log(sendPayment());
    }
});

仍然无效。我找不到任何简单的wrapAsync示例。我发现了一些关于Future包的东西但帖子很老了。

有任何想法吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果你想使用期货,这里有一个例子:

var Future = Npm.require('fibers/future');
Meteor.methods({
    buy: function(){
        var future = Future();
        Payment.sendPayment(function(err){
            if(err) {
                return future.return(err); //return the error
            }
            return future.return(); //you can return the result here if you want
        });
        return future.wait();
    }
});