1. ホーム
  2. Web プログラミング
  3. ジャバスクリプト

JavaScriptにおけるマクロタスクとミクロタスクの詳細

2022-01-13 10:18:42

<スパン 1. マイクロタスクとは

public function test() {
    //this xml has 2 root nodes: user and other
    $xml = '
Name
99
study
you guess
1
';
    $array = self::xmlToArray($xml);
    var_export($array);
    die;
}

//transform xml to array
public function xmlToArray($xml) {
    if (! $xml) {
        die('xml data exception');
    }
    // Disable references to external xml entities to prevent XXE injection
    libxml_disable_entity_loader(true);//prohibit references to external xml entities
    //transform XML to array
    $arrayData = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
    return $arrayData;
}

そして Entity: line 1: parser error : Extra content at the end of the document

2. マクロタスクとは

root

  • イベント
  • // Add a root tag root to prevent the conversion from reporting an error due to multiple root tags: Extra content at the end of the document in file $xml = ' Name 99 study you guess 1 '; $array = self::xmlToArray($xml); var_export($array); die; リクエスト

3. ケース

root

印刷の順番は次の通りであることがわかります。

array ( 'user' => array ( 'name' => 'name', 'age' => '99', 'hobby' => 'study', 'like' => 'you guess', ), 'other' => '1', )

なぜこの順番なのか?

1~4を先に印刷しても絶対に大丈夫です

なぜ、3を先に印刷し、次に2を印刷するのですか?

なぜなら、3は 0777 , mkdir('file address', 0777, true); //true: recursive directory creation chmod('file address', 0777); はマイクロタスクである。

2は 0777 であり、マクロタスクである

マイクロタスクは、マクロタスクよりも早く実行されます。

つまり、2より先に実行されるのは3なのです

3.1 結論

  • 非同期より同期、マクロよりマイクロ
  • マイクロタスクはマクロタスクより早く実行されるha〜。

4. コード例

chmod -R 777 /var/www/web/public/2021.txt


4.1 コード解析

上記コードの実行状況を解析します。

は最初に実行されなければならない 1-4

次に、マイクロタスクが先で、マクロタスクによると

は3を出力し、3をポップアップすること

では、2を出力してポップアップするということです setTimeout2 [エラー

の間に別のマイクロタスクとマクロタスクが存在するためです。 DOM レンダリング

では、次に dom をレンダリングし、最後にマクロタスク

つまり、出力 1-4 の後に実行されます。 DOM のレンダリングを行います。

出力2の前に、ポップアップで setTimeout2

4.2 結論と応用例

Microtask" DOM rendering" マクロタスク 次の例を見てください。

この結論が適用されるシナリオ

エチャートはみんなやったことがある。イーチャートをレンダリングするときは知っています。

ノードをレンダリングさせる前に、ページの DOM がレンダリングされている必要があります。

そこで、monuted()のライフサイクルに入れるリクエストのタイミングを聞いてくる方がいます

これにより、返されたデータが間違いなくページ上で適切にレンダリングされるようになります。

実際、上記のこの結論からすると

クリエイテッドでデータをリクエストすることは全然できます。それが返ってきたら

DOMはレンダリングが終わっている必要があります。なぜなら、リクエストはマクロのタスクだからです。

マクロタスクの実行タイミングは、DOMがレンダリングされた後ですハ

この時点では、この記事の JavaScript JavaScriptのマクロタスクとマイクロタスクに関する記事は以上です。 JavaScript コードにおけるマクロタスク、マイクロタスクの詳細については、BinaryDevelopの過去の記事を検索するか、以下の記事を引き続き閲覧してください。