_.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エントリになることもあれば、数百または数千(おそらく1000倍の誇張)である可能性もあります。私が知っているのは、私が使っているものではありませんが、実行する前にコールスタックを待つために_.defer()のようなものに切り替える方法はありますか? –