2017-02-08 7 views
-1

私はMithrill v1.0.0デベロッパーを使用していますと呼ばれるこのm.requestは、ここでは、コンソール上のコードはなぜ二度

var scrollable = {}; 

scrollable.Product = { 
    list : [], 
    loadList : function(store){ 
     m.request({ 
      method : "GET", 
      url : "APIUrl" + store, 
      withCredentials : true 
     }).then(function(result){ 
      scrollable.Product.list = result; 
     }) 
    } 
} 

scrollable.oninit = function(){ 
    scrollable.Product.loadList("authentic") 
} 

scrollable.view = function(){ 
    console.log(scrollable.Product.list.result) //Here's give me two line log 
} 

だその私に2行のログを与え、最初のものは未定義であり、第二れます1つはAPIの結果値を持つ配列です。

+0

loadListは非同期です - 私はあなたに残りの部分を記入させていただきます –

答えて

1

m.requestへの呼び出しは、約束を返し、約束チェーンの完了時に再描画をトリガーします。

m.request docs

とき、あなたのm.request完了かつてはもう一度最初は、その後、二回描画です。

0

私はMithrillを使用したことはありませんが、ReactJSの観点からは、非同期呼び出しの解決による状態の変化が再レンダリングを引き起こすと思います(つまりscrollable.viewを再度実行します)。 ;非同期メソッド:

  1. 初期状態:listは空

  2. scrollable.oninit実行されます。ここ

    は私が起こる考えるものです一度に解決されません。

  3. scrollable.view実行:コンソール印刷はまだ空ですlist

  4. 非同期メソッド2で解決されます。 listにはフェッチされた値が割り当てられます。

  5. 状態変化が検出されました。トリガーは再び実行されます。scrollable.viewコンソールはAPI値でlistを表示するようになりました。

関連する問題