Gibt es eine Möglichkeit zur asynchronen Verwendung _.some()? Ich habe das folgende Code-Snippet, das ich versuche, zu einer asynchronen Methode zu wechseln, um zu verhindern, dass es Timeout-Probleme verursacht.Wie asynchron zu verwenden _.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;
},
Die Plattform, für die ich schreibe, verwendet JavaScript ES7, so dass async/await verwendbar ist.
Jedwedes Hilfe ist willkommen,
Scott
Asynchroner Code wird Ihnen hier nicht helfen, weil Ihre 'DLClear' -Funktion (und' _.some') nicht IO-gebunden sind, sondern eine "busy" -Funktion. Wenn der Code in Ihrer Umgebung zu lange dauert, schlägt er vor, dass Sie einen ineffizienten Algorithmus verwenden. Was macht Ihre "segmentIntersection" -Funktion? Wie groß ist das Array "wallSegments"? – Dai
Dies ist für ein Skript für eine virtuelle Tischplatte (VTT) Gaming-Plattform. segmentIntersection bestimmt, ob die Segmente, die an es übergeben werden, sich an irgendeinem Punkt schneiden. Die Größe des wallSegments-Arrays ist nicht festgelegt. Es hängt davon ab, wie viele Wandsegmente der Benutzer auf dem VTT erstellt hat, also könnte es 1 Eintrag sein oder könnte ein paar Hundert oder Tausend sein und (ok tausende wahrscheinlich hyperbole). Ich weiß, dass _.some() nicht das ist, was ich benutze, aber gibt es eine Möglichkeit, dass ich es mit etwas wie _.defer() verwenden könnte, um von dem Call-Stack zu warten, bevor er ausgeführt wird? –