Chuỗi Promise này có được đảm bảo thực thi theo thứ tự này không?
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
let p = sleep(50);
p.then(() => console.log('a')).then(() => console.log('c'));
p.then(() => console.log('b')).then(() => console.log('d'));
Đây có phải là đảm bảo để in "a, b, c, d" để đó? Theo như tôi có thể nói, "a" phải kích hoạt trước "c" và "b" phải kích hoạt trước "d", nhưng ngoài ra, có thể trình thông dịch JS quyết định thực hiện phần còn lại theo thứ tự khác ?
Bản sao có thể có của [Thứ tự lời hứa sau đó() của JavaScript] (http://stackoverflow.com/questions/29111626/javascript-promise-then-ordering) – GSerg
'p.then(). Then()! = P' , nhưng bạn có thể cache "return" của dòng đầu tiên để có được sự bảo đảm – dandavis
@dandavis - điều đó hoàn toàn không có liên quan trong ngữ cảnh này. Ngoài ra - sử dụng! = Sẽ ép buộc mọi thứ. Vì vậy, nó thực sự không thể hiểu những gì bạn đang cố gắng để truyền đạt. –