有沒有辦法異步使用_.some()?我有下面的代碼片段,我試圖切換到異步方法,以防止它造成超時問題。如何異步使用_.some
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'數組有多大? – Dai
這是針對虛擬桌面(VTT)遊戲平臺的腳本。 segmentIntersection確定傳遞給它的片段是否在任何點相交。 wallSegments數組的大小不固定。這取決於用戶在VTT上創建了多少個牆段,因此可能是1個條目,或者可能是幾百或幾百個,並且(好的千個可能是誇張的)。我知道_.some()並不是我將要使用的,但是有沒有一種方法可以將它切換爲使用諸如_.defer()之類的方法等待調用堆棧在運行之前完成? –