سؤال

هل يمكن لأي شخص نشر رمز عينة حيث يوجد توقيت قيد التشغيل (JavaScript Settimeout) والقيام باسترجاع البيانات ..

أساسا ما هو هذا الموقت هو عرض رسائل جديدة ..

myFunction(param){

//data retrieval operation
//using getJSON.. call displaydata() base on param

settimeout("myFunction()", param, 1000);

}

function displaydata(param){

//processing
alert('test')}

هل يجب علي استخدام GetJson؟ أعتقد أن هناك مشكلة في المكالمة غير المتزامنة ..

هل كانت مفيدة؟

المحلول

شيئين لاحظت أنك بحاجة إلى إصلاحه في التعليمات البرمجية الخاصة بك.

  • ال setTimeout() الطريقة لديها بعض الحجج غير صحيحة
  • الخاص بك غير متزامن getJSON اتصل بإنشاء شرط سباق بين المهلة التالية ونتيجة getJSON طريقة. القيام بذلك بدلا من ذلك:

.

function yourFunction(params) {  
    jQuery.getJSON("url", {data}, function(data, textStatus){
        // handle your JSON results

        // Call the timeout at the end of the AJAX response
        // This prevents your race condition
        setTimeout(function(){
            yourFunction(params);
        }, 1000);
    }
} 

setTimeout(function(){
    yourFunction(params);
}, 1000);

نصائح أخرى

يجب أن تكون المعلمة الأولى وظيفة حرفية أو مرجع دالة ويجب أن تكون المعلمة الثانية مللي ثانية.

setTimeout( function() {
    getData('param')
}, 1000);

function getData() {
     $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?",
        function(data){
          $.each(data.items, function(i,item){
            $("<img/>").attr("src", item.media.m).appendTo("body");
            if ( i == 3 ) return false;
          });
        });
}

أنا لا أستخدم الوسيطة الفعلية في مثالي ولكن يمكنك تحديثه بسهولة للقيام بذلك. كما لم أكن متأكدا مما إذا كنت قد اقتراع (هذا لا يفعل استدعاء الاستطلاع / المكشوف).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top