【发布时间】:2017-09-03 12:40:49
【问题描述】:
有没有办法异步使用_.some()?我有下面的代码 sn-p 我正在尝试切换到异步方法以防止它导致超时问题。
DLClear = function( obj, squarePt ) {
var wallPaths = findObjs( {
_type : 'path',
_pageid: obj.get('pageid'),
layer : 'walls'
} );
var landingPt = [ obj.get('left'), obj.get('top'), 1 ];
var wallSegments = PathMath.toSegments( wallPaths );
var squareSeg = [ landingPt, squarePt ];
var blocked = _.some( wallSegments, function( wallSeg ) {
return PathMath.segmentIntersection( squareSeg, wallSeg );
} );
return !blocked;
},
我正在编写的平台是使用 javascript ES7,所以 async/await 是可用的。
感谢所有帮助,
斯科特
【问题讨论】:
-
异步代码在这里对您没有帮助,因为您的
DLClear函数(和_.some)不是 IO 绑定的,而是一个“忙”函数。如果您的代码在您的环境中执行时间过长,则表明您使用的算法效率低下。你的segmentIntersection函数有什么作用?wallSegments数组有多大? -
这是用于虚拟桌面 (VTT) 游戏平台的脚本。 segmentIntersection 确定传递给它的线段是否在任何点相交。 wallSegments 数组的大小不固定。这取决于用户在 VTT 上创建了多少墙段,因此可能是 1 个条目,也可能是几百或几千个(好吧,可能是几千个夸张)。我知道 _.some() 不是我最终会使用的,但是有没有办法可以将它切换为使用 _.defer() 之类的东西来等待调用堆栈在运行前完成?
标签: javascript node.js asynchronous