jquery getjson داخل توقيت settimeout
-
13-09-2019 - |
سؤال
هل يمكن لأي شخص نشر رمز عينة حيث يوجد توقيت قيد التشغيل (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;
});
});
}
أنا لا أستخدم الوسيطة الفعلية في مثالي ولكن يمكنك تحديثه بسهولة للقيام بذلك. كما لم أكن متأكدا مما إذا كنت قد اقتراع (هذا لا يفعل استدعاء الاستطلاع / المكشوف).
لا تنتمي إلى StackOverflow