Events 事件发射器上的Meteor.wrapAsync,最佳实践?

Events 事件发射器上的Meteor.wrapAsync,最佳实践?,events,asynchronous,meteor,Events,Asynchronous,Meteor,我正在尝试使用Meteor.wrapAsync包装一个异步函数,该函数返回一个事件发射器,使其在服务器上同步 以下是我当前的实现: var wrapAsync = function(asyncFunc, context){ return Meteor.wrapAsync( (data,callback)=>{ asyncFunc(data).on('complete', function(data){ call

我正在尝试使用
Meteor.wrapAsync
包装一个异步函数,该函数返回一个事件发射器,使其在服务器上同步

以下是我当前的实现:

var wrapAsync = function(asyncFunc, context){
    return Meteor.wrapAsync(
        (data,callback)=>{
            asyncFunc(data).on('complete', function(data){
                callback(null,data)
            })
        },
        context
    )
}
所以,我的想法是:

1-将事件发射器包装成经典的
函数(args,callback)
异步函数

2-要将其传递给Meteor.wrapAsync,它需要一个参数为
(err,res)
回调的函数,并返回一个sync函数

这不起作用,因为上下文没有正确地传递给函数。我试过用一支粗箭,但没用


在这种情况下,最佳做法是什么?

哪个部件不工作?很难从代码中分辨出来,但我怀疑您需要的是:
(asyncFunc.bind(context))(data)
asyncFunc
是一个方法时,函数有时会抛出错误,因为它的上下文未定义。我不需要再实现这个函数了,因为我需要包装的
asyncFunc
实际上以回调作为参数(它是从文件不完整的Sendinblue API中形成的),但我认为您的解决方案是正确的。哪一部分不起作用?很难从代码中分辨出来,但我怀疑您需要的是:
(asyncFunc.bind(context))(data)
asyncFunc
是一个方法时,函数有时会抛出错误,因为它的上下文未定义。我不再需要实现这个函数了,因为我需要包装的
asyncFunc
实际上将回调作为其参数(它是从文档不完整的Sendinblue API中形成的),但我认为您的解决方案是正确的。