English help on website



awaitjs文(Ver9.46対応版)
目次− awaitjs文
awaitjs文は、JavaScriptのhidemaru.notifyAwaitが呼ばれるまで、マクロの実行を待機します。(V9.39以降)
awaitjsでマクロが終了していない間は、非同期で呼ばれた関数内であっても従来マクロの変数アクセスや、hidemaruGlobalのメソッドを呼ぶことができます。
待機中は、Esc等のキー操作でマクロ実行を中断することが可能です。
awaitjs "TEST";
パラメータ1(文字列型)
hidemaru.notifyAwaitで使うものと同じ、任意キーワードを指定します。
currentmacrofilename()を使うなど、他のマクロと被らないものにしてください。

結果コード
resultは0以外になります。

debuginfo 2;
debuginfo "\n開始\n";
js{
  hidemaru.setTimeout(
    function(){
      console.log("timeout");
      hidemaru.notifyAwait("KEYWORD");//awaitjsの待機を抜ける
    }
    , 1000 );
}
awaitjs "KEYWORD";
debuginfo "\n終了\n";
endmacro;
非同期で呼ばれた関数内で、hidemaruGlobalにあるメソッドを呼ぶ例。
debuginfo 2;
debuginfo "\n開始\n";
js{
  hidemaru.setTimeout(
    function(){
      console.log("1秒後にメニュー出す");
      menu("項目1","項目2","項目3");
      console.log("メニュー選んだ");
      hidemaru.notifyAwait("KEYWORD");//awaitjsの待機を抜ける
    }
    , 1000 );
}
awaitjs "KEYWORD";
debuginfo "\n終了\n";
endmacro;
curlの標準入出力を非同期で待つ例。
debuginfo 2;
debuginfo "\n開始\n";
js{
  exe=hidemaru.runProcess("curl.exe https://hide.maruo.co.jp/","","stdio");
  exe.stdOut.onReadAll(
        function(out){
            console.log(out);
            hidemaru.notifyAwait("KEYWORD");//awaitjsの待機を抜ける
        }
    );
}
awaitjs "KEYWORD";
js{
  exe=undefined;
}
debuginfo "\n終了\n";
endmacro;
hidemaru.notifyAwait