2016-12-16 25 views
5

Tôi đang sử dụng lời hứa trong khối mã bên dưới, 2 trước rồi() Tôi không trả về bất kỳ giá trị nào, vì vậy tôi tự hỏi đó là hàm trong hàm đầu tiên sau đó() được gọi trước hàm sau đó(). Im sử dụng bản sao vào góc 2. Cảm ơn bạn: Dbằng cách sử dụng sau đó() trong lời hứa

Promise.resolve() 
    .then(()=>{ 
     this.getListStatus(); 
    }) 
    .then(()=>{ 
     return this._laundryServiceOrderService.findAll(true, offset, this.itemsPerPage, filterQuery) 
    }) 
    .then((response) => { 
     this.orders = response.data; 
     this.totalItems = response.totalItems; 
    }) 
    .catch(error => { 
     FlashMessage.setError(error.message); 
    }); 
+0

_ "Tôi không trả lại bất kỳ giá trị" _ Tại sao bạn không trả về một giá trị? Mục đích của 'Promise.resolve()' là gì? – guest271314

+1

Tôi nghĩ rằng sau đó() sử dụng phản ứng trả về từ trước đó –

+1

@NhanNguyen: Đúng. –

Trả lời

6

đầu tiên sau đó() Tôi không trả lại bất kỳ giá trị, do đó, tôi tự hỏi đó là các chức năng trong lần đầu tiên sau đó() gọi trước khi các chức năng trong tiếp theo sau đó().

Vâng, đúng vậy. (Điều này có thể được kiểm tra một cách trivially bằng một trình gỡ rối.)

Không quan trọng là nó không trả về một giá trị; đó là hiệu quả giống như làm return undefined. Vì vậy, gọi lại tiếp theo trong chuỗi sẽ thấy undefined là giá trị độ phân giải, nhưng vì cuộc gọi lại tiếp theo không quan tâm đến giá trị độ phân giải, điều đó là tốt.

Dưới đây là một ví dụ đơn giản chứng minh điều đó:

Promise.resolve("a") 
 
    .then(result => { 
 
    console.log("First callback got: " + result); // Gets "a" 
 
    }) 
 
    .then(result => { 
 
    console.log("Second callback got: " + result); // Gets undefined 
 
    return "b"; 
 
    }) 
 
    .then(result => { 
 
    console.log("Third callback got: " + result); // Gets "b" 
 
    }) 
 
    .catch(error => { 
 
    console.log("There's no error above, this won't get triggered."); 
 
    });

+0

cảm ơn bạn rất nhiều –

Các vấn đề liên quan