جافا سكريبت يؤدي إيقاف البرنامج النصي مؤقتا إلى تغيير ترتيب المظهر

StackOverflow https://stackoverflow.com//questions/9615469

  •  09-12-2019
  •  | 
  •  

سؤال

لدي البرنامج النصي التالي:

posting();      
pause(time);    
postSent(postUrl, fields);

function postSent(postUrl, fields)
{
  $.ajax( {                                    
  url : postUrl,
  type : "POST",
  data : fields,
  cache : false,
  error : function(xhr, textStatus, errorThrown) {
        var answer = xhr.responseText;         
    answer = answer.split(":");
    answer = answer[0].replace(/}/g,"").replace(/{/g,"").replace(/"/g,"");
    if (answer == "id")
    {
            isPostSent = true;              
    }
    else
    {
        isPostSent = false;         
    }         

    }        
   }); 
}

function pause(milliseconds) {
var dt = new Date();
while ((new Date()) - dt <= milliseconds) { /* Do nothing */ }
}

function posting()
{
var table = ''; 
table += '<table border="0" rules="none" cellpadding="5" style="z-index:+10; position:fixed; top:35%; left:35%; box-shadow:  0px 0px 5px 5px #888888;" rules="none" border="0" bgcolor="#edeff4">';
table += '<td align="center">';
table += '<img src="images/loading.gif" id="post_status_image">';
table += '</td>';
table += '<tr >';
table += '<td align="center">שולח הודעה, אנא המתן...</td>';
table += '</tr>';
table += '<tr>';
table += '<td align="center" id="post_status"></td>';
table += '</tr>';
table += '<tr >';
table += '<td align="center" ><img id="post_close" src="images/close1.png" onclick="closePop()" style="visibility:hidden;"></td>';
table += '</tr>';
table += '</table>';
document.getElementById('post').innerHTML = table;  
 }

يتم تعيين الوقت إلى 3000 ميلي ثانية.مشكلتي هي أنني أريد نشر () وظيفة لإظهار الجدول على الشاشة (نوعه من شاشة "تحميل") ومن ثم إيقاف البرنامج النصي.في الواقع الفعلي ، من سبب ما توقف البرنامج النصي أولا ، وفقط بعد أن ينتهي ، فإنه يظهر لي شاشة التحميل...كيف يحدث ذلك ?

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

المحلول

المتصفحات تشغيل جافا سكريبت وتقديم كل شيء على موضوع واحد.لذلك كل ثلاثة من وظائف جس الخاص بك سوف تنتهي قبل تحديث الصفحة.لهذا السبب يجب عليك أبدا تنفيذ وظيفة وقفة في جس التي تقوم على حلقة في حين والتحقق من الوقت.بدلا من ذلك تحتاج إلى استخدام setTimeout() ووضع أي رمز يحتاج إلى تشغيل بعد وقفة في رد الاتصال الذي تمر إليه setTimeout().

باستخدام رمز المثال الخاص بك:

posting();
setTimeout(function() {
    postSent(postUrl, fields);
}, 3000);

نصائح أخرى

لا يوجد وظيفة نوم أو إيقاف مؤقت في JavaScript الأصلي.ولكن يمكننا تحقيق مثل هذا. giveacodicetagpre.

قمت بإنشاء كمان في: http://jsfiddle.net/6dqbp/

النصي مأخوذ من: http://www.phpied.com/sleep-in-جافا سكريبت /

لقد وجدت هذا عنوان URL بعد الإجابة عليه.قد تكون مفيدة.

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