如何在Meteor中使用wrapAsync

时间:2014-12-22 20:35:09

标签: asynchronous meteor fibers node-fibers

我无法确定如何使用Meteor正确使用wrapAsync。我目前正在使用node-apac和Amazon Product Advertising API。

如果我试图运行以下代码,我该如何异步运行它:

opHelper.execute('ItemSearch', {
    'SearchIndex': 'Books',
    'Keywords': 'harry potter',
    'ResponseGroup': 'ItemAttributes, Offers'
}, function(err, results) {
    console.log(results);
});

我曾尝试观看多个视频,但遇到了麻烦

1 个答案:

答案 0 :(得分:0)

Meteor.wrapAsync采用opHelper.execute之类的异步方法并使其同步。它可以做到这一点,只要该方法采用的最后一个参数返回一个回调,其中第一个参数是错误,第二个参数是结果。这就像你的方法!

您创建了一个同步的新方法:

var opExecuteSynchronous = Meteor.wrapAsync(opHelper.Execute, opHelper);

第一个参数opHelper.Execute是您想要异步的方法,第二个参数是方法的上下文(opHelper)。

您现在可以同步使用此功能:

var results = opExecuteSynchronous('ItemSearch', {
    'SearchIndex': 'Books',
    'Keywords': 'harry potter',
    'ResponseGroup': 'ItemAttributes, Offers'
})

如果在回调中调用err而不是results,则会抛出错误。