2016-01-03 19 views
5

Tôi có một hàm có hai dòng và tôi muốn chúng được thực hiện theo thứ tự. Chức năng là:Thực thi 2 hàm JavaScript theo thứ tự

showNotification(message){ 
    $("#notificationMessageBody").html(message); // line1 
    $("#notificationModal").modal('show');  //line2 
} 

Vì vậy, bất cứ khi nào tôi gọi showNotification("Hello World!") làm thế nào để đảm bảo line1 được thực hiện trước khi line2 (có nghĩa là tải nội dung được thực hiện trước khi trigger modal) Về cơ bản, tôi đang cố gắng để điền vào thông điệp của tôi trong phương thức cơ thể và sau đó hiển thị nó, không phải trước khi điền.

--EDIT--

Các chức năng được thực thi một sau khi khác, nhưng pops modal của tôi trước khi jQuery tải của tôi message vào tôi #notificationMessageBody

Kết quả là, ví dụ: Nếu tôi gọi showNotification("Hello") Tôi nhận được một phương thức với "Hello" (sắp xếp các modals và các công cụ được thực hiện), nhưng sau đó nếu tôi gọi showNotification("World") phương thức xuất hiện với "Hello" đầu tiên sau đó nó thay đổi thành "World".

Lưu ý: "Xin chào" và "Thế giới" là một đoạn văn bản lớn, vì vậy việc tải nội dung đó vào DIV của tôi phải mất một thời gian, tôi tin. Mặc dù chúng được thực thi sau khi khác, nó xuất hiện (để phổ biến-er) mà phương thức đầu tiên là popping và sau đó thay thế được thực hiện. Tôi hy vọng hình ảnh là một chút rõ ràng bây giờ.

Không có AJAX nào liên quan đến bất kỳ nơi nào ở đây xung quanh chức năng. Về cơ bản, đây là chức năng cảnh báo tùy chỉnh() mà tôi có thể nói. Một phương thức có ID thích hợp có trong trang của tôi. Tôi thay đổi nội dung phương thức (với chức năng .html() của jQuery) và kích hoạt phương thức hiển thị, như được nhìn thấy từ mã.

+0

Sử dụng 'setTimeout'. 'firstStatement; setTimeout (function() {secondStatment;}, 0); ' – Tushar

+1

Các phương thức này đồng bộ nên nếu nó không hoạt động chính xác, bạn đã chẩn đoán sai vấn đề. Phương thức không có nội dung chính xác khi nó mở ra? – JJJ

+2

Vui lòng cung cấp bản demo cho biết chúng không thực thi theo thứ tự. Điều này nghe có vẻ giống như một vấn đề XY. Cũng cho thấy cách bạn gọi chức năng này. Nếu nó liên quan đến một yêu cầu ajax, vấn đề có thể nằm ở cách bạn gọi nó là – charlietfl

Trả lời

3

Bạn có thể sử dụng phương pháp .promise() (thêm vào trong jQuery 1.6) để đảm bảo thứ hai được thực hiện sau khi đã hoàn tất:

$("#notificationMessageBody").html(message).promise().done(function() { 
    $("#notificationModal").modal('show'); 
}); 
Các vấn đề liên quan