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

  • BgirlNilaya

    BgirlNilaya

    29 EKİM 2008
  • Philip DeFranco

    Philip DeFra

    16 EYLÜL 2006
  • Rachel Talbott

    Rachel Talbo

    26 Ocak 2011