【发布时间】:2020-09-09 05:18:52
【问题描述】:
我知道如何使用Meteor.wrapAsync(),使一个接受回调或返回一个承诺的函数像同步一样可用。
是否有可能做相反的事情,如果可以,如何做?我有一个服务器端函数,可以同步调用一些 Meteor 的东西(包括集合和帐户)。我希望能够使用p-all 或async.js 之类的东西批量同时运行它,以处理数组中的项目并等待完成。
该应用正在使用 Meteor 1.6.0.1。
这是一些不起作用的代码,因为“Meteor 代码必须始终在 Fiber 中运行”:
const actions = entries.map(entry =>
() => new Promise((resolve, reject) =>
Meteor.defer(() => {
try {
const result = createUserFromEntry(entry, schoolId, creatorId, recordTypeId, signupYmd);
resolve(result);
} catch (exc) {
reject(exc);
}
})
)
);
Meteor.wrapAsync(callback =>
pAll(actions, { concurrency: 8, stopOnError: false })
.then(res => callback(null, res))
.catch(err => callback(err, null))
)();
也欢迎提出在 Meteor 中实现相同目标的不同/正确方法的建设性建议。
【问题讨论】:
标签: javascript asynchronous meteor callback