将一组q个promise发送到数据包中,并连续运行这些数据包
我的目标是复制文件并将并行复制的文件限制为一个已定义的variables。 因此,我将fs.copy
调用拆分成了一组数据包,并使用reduce函数串行运行这些数据包。
var promise = _.reduce(packets, function (previous, packet) { var map = _.map(packet, function (file) { return q.nfcall(fs.copy, file.source, file.target); }); return previous.then(q.all.bind(null, map)); }, q());
如何用q
实现我的目标?
看来,几乎所有的任务都是在同一时间开始的。
是的,那是因为map
和reduce
都是同步的,迭代所有数据包并立即创build所有任务。
相反,您需要将q.nfcall(fs.copy, …)
调用放在previous.then
callbackq.nfcall(fs.copy, …)
使用.bind()
隐藏起来,这样就可以很好地隐藏起来),所以只有在previous
parsing:
var promise = _.reduce(packets, function (previous, packet) { return previous.then(function(packetresult) { var map = _.map(packet, function (file) { return q.nfcall(fs.copy, file.source, file.target); }); return q.all(map); // optionally, also pass the previous packetresult }); }, q([]));
- TinyMCE吞咽configuration
- 日志logging系统nodejs和节点worker
- 'babel-core / register'vs'babel-register'
- Pg-promise性能提升:具有多个更新参数的多个插入
- 如何使用node / express将每个无效请求路由到默认path
- npm节点enconding
- 使用grunt-obfuscator混淆js文件:未捕获ReferenceError:require未定义
- Node.js JavaScript如何在TCP服务器中将asynchronous事件处理程序中的oject数据作为“socket.on”访问?
- Node.js中的成语callback