SORU
2 ŞUBAT 2011, ÇARŞAMBA


Nasıl bir WordPress kullanmak ertelenmiş kullanılabilir mi?

jQuery 1.5 yeni Ertelenmiş nesne ve ekli yöntemleri .when, *4* *5* getiriyor.

it kaynak açıklamalı ettim önce .Deferred kullanılan tarzda olanlar için

Bu yeni yöntemlerin Olası kullanımları nelerdir, nasıl uydurma konusunda gitmek kalıpları içine muyuz?

Zaten API okudum ve ne yaptığını biliyorum yani 26**,. Benim soru nasıl günlük kod bu yeni özellikleri kullanabilir miyiz?

AJAX sırada isteği çağıran bir tampon sınıfı example bir basit var. (Sonraki başladıktan sonra önceki tamamlanır).

/* Class: Buffer
 *  methods: append
 *
 *  Constructor: takes a function which will be the task handler to be called
 *
 *  .append appends a task to the buffer. Buffer will only call a task when the 
 *  previous task has finished
 */
var Buffer = function(handler) {
    var tasks = [];
    // empty resolved deferred object
    var deferred = $.when();

    // handle the next object
    function handleNextTask() {
        // if the current deferred task has resolved and there are more tasks
        if (deferred.isResolved() && tasks.length > 0) {
            // grab a task
            var task = tasks.shift();
            // set the deferred to be deferred returned from the handler
            deferred = handler(task);
            // if its not a deferred object then set it to be an empty deferred object
            if (!(deferred && deferred.promise)) {
                deferred = $.when();
            }
            // if we have tasks left then handle the next one when the current one 
            // is done.
            if (tasks.length > 0) {
                deferred.done(handleNextTask);
            }
        }
    }

    // appends a task.
    this.append = function(task) {
        // add to the array
        tasks.push(task);
        // handle the next task
        handleNextTask();
    };
};

.Deferred .when gösterileri ve olası kullanır arıyorum.

Ayrıca ._Deferred örnekler görmek güzel olurdu.

Örnekler için *11* yeni kaynak bağlantı aldatıyor.

Ödül:Teknikleri biz bir operasyon olsun uzak soyut eşzamanlı olduğunda kullanılabilir olan veya olmayan bir şekilde yapılır bize gösteriyor.

CEVAP
2 ŞUBAT 2011, ÇARŞAMBA


Düşünebildiğim en iyi kullanmak durumunda AJAX yanıtları önbelleğe alma. İşte Rebecca Murphey's intro post on the topic değiştirilmiş bir örnek:

var cache = {};

function getData( val ){

    // return either the cached value wrapped in a Promise, or
    // jqXHR object (which contains a Promise)
    return $.when(cache[ val ]) || $.ajax('/foo/', {
        data: { value: val },
        dataType: 'json',
        success: function( resp ){
            cache[ val ] = resp;
        }
    });
}

getData('foo').then(function(resp){
    // do something with the response, which may
    // or may not have been retreived using an
    // XHR request.
});

Eğer değer zaten daha önce talep edilmiş ise temelde, hemen önbellekten döndü. Aksi takdirde, bir AJAX isteği veri alır ve önbelleğe ekler. Bu $.when/.then dikkat etmez bununla ilgili; tüm olmalısın ilgili ilgili kullanma yanıtı, hangi iletilir .then() işleyicisi her iki durumda. jQuery.when() non-Söz/Tamamlanmış olarak Ertelenmiş, hemen .done() veya zincir .then() herhangi yürütülen işler.

Deferreds görev olabilir veya zaman uyumsuz olarak çalışmayabilir zaman için mükemmeldir, ve kod bu durum soyut.

Başka bir gerçek dünya örneği $.when yardımcı kullanarak

$.when($.getJSON('/some/data/'), $.get('template.tpl')).then(function (data, tmpl) {

    $(tmpl) // create a jQuery object out of the template
    .tmpl(data) // compile it
    .appendTo("#target"); // insert it into the DOM

});

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AndroidSale

    AndroidSale

    17 NİSAN 2011
  • LimeFire

    LimeFire

    2 ŞUBAT 2012
  • midomansour

    midomansour

    19 EYLÜL 2009