SORU
12 Aralık 2013, PERŞEMBE


Angularjs bir söz vermeden önce gidermek iade EDEBİLİR MİSİN?

Söz döndüren bir fonksiyon yazmaya çalışıyorum. Ama bilgi hemen kullanılabilir istenen zamanlar vardır. Söz tüketici bir karar gerek yok o kadar sarın istiyorum.

function getSomething(id) {
    if (Cache[id]) {
        var deferred = $q.defer();
        deferred.resolve(Cache[id]); // <-- Can I do this?
        return deferred.promise;
    } else {
        return $http.get('/someUrl', {id:id});
    }
}

Ve aşağıdaki gibi kullanabilirsiniz:

somethingService.getSomething(5).then(function(thing) {
    alert(thing);
});

Sorun geri önceden çözülmüş Sözü için yürütmüyor. Bu yasal bir şey mi? Daha iyi bir yolu bu durumun üstesinden gelmek için var mı?

CEVAP
20 Ocak 2014, PAZARTESİ


TL;DREvet, yapabilirsinizönce, AngularJS bir söz gidermek ve beklediğiniz gibi davranır.

JB den Nitzets Plunkr ama sitede aslında isteneni kapsamında (hizmet için bir işlev çağrısı gibi) içinde ve aslında çalışmak için refactored.

İç hizmet...

function getSomething(id) {
    // There will always be a promise so always declare it.
    var deferred = $q.defer();
    if (Cache[id]) {
        // Resolve the deferred $q object before returning the promise
        deferred.resolve(Cache[id]); 
        return deferred.promise;
    } 
    // else- not in cache 
    $http.get('/someUrl', {id:id}).success(function(data){
        // Store your data or what ever.... 
        // Then resolve
        deferred.resolve(data);               
    }).error(function(data, status, headers, config) {
        deferred.reject("Error: request returned status "   status); 
    });
    return deferred.promise;

}

Denetleyici içinde....

somethingService.getSomething(5).then(function(thing) {
    alert(thing);
});

Birisi yardımcı olur umarım. Diğeri çok net cevaplar bulamadım.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Christopher Bill

    Christopher

    30 NİSAN 2009
  • cyriak

    cyriak

    29 Mart 2006
  • Jonathan Flavell

    Jonathan Fla

    1 HAZİRAN 2006