でループの内側に他のコールバック/約束を/使用して同期呼び出しを作りますいくつかのテキストをファイルに追加します。は、私は次のような状況をしたのJavascript
function processAttrs(clazz) {
//window.alert("Hello" + clazz.name + " " + clazz.length);
var file = FileSystem.getFileForPath("/Users/XXX/" + clazz.name + ".txt");
createFile(file, function() {
for (var i=0; i<clazz.attributes.length; i++) {
var attr = clazz.attributes[i];
var text = "private " + attr.type + " " + attr.name + "\n";
appendToFile(text, file);
}
});
}
問題がFileUtils.readAsText(ファイル)が非同期的に呼び出されることで、そのファイルに書き込む必要があるいくつかの行が迷子に:この関数から呼び出されます。
freeze()とunfreeze()は、コード実行を停止して再開するために何かを実装することを考えた空の関数ですが、このメカニズムはJavascriptでは存在しないようです。
私はcreateFile(file)関数で行ったようにコールバックを使うことを考えました。問題は、コード実行がforループの内側にあるため、コールバック関数として渡すべきものがわからないことです。
私は、forループのないソリューションを考えて、コールバックを使って手動でフローを処理することができますが、私はそれを気に入らないのです。より洗練されたソリューションが必要です。