2016-06-17 10 views
0
var dataPromise= $q.defer(); 

    function getDataPromise(){ 
    return dataPromise.promise; 
    } 

    (function getData(){ 
    setTimeOut(
     function(){ 
      myPromise.resolve("data"); 
     } 
     ,1000); 
    })(); 

    getDataPromise().then(function(){alert("use old data");}); 

このコードでは、 "getData"関数スコープから定義された "dataPromise"のため、各 "getData"呼び出しで新しい約定が作成されません。関数を一度呼び出すためのJavaスクリプト約束の使用

「getData」は一度呼び出され、「dataPromise」は最初の呼び出しデータを保持し、更新されません。

これがおもしろいアンチパターンであれば分かりますか?もしそうなら、一度非同期関数を呼び出す正しい方法は何ですか?ここで

答えて

0

は、私はそれを書くだろう方法は次のとおりです。

const dataPromise = $q(function(resolve) { 
    setTimeOut(function() { 
     resolve("data"); 
    }, 1000); 
}); 

function getDataPromise() { 
    return dataPromise; 
} 

getDataPromise().then(function(){alert("use old data");}); 
関連する問題