Theo tôi hiểu thì một lời hứa là thứ có thể giải quyết () hoặc từ chối () nhưng tôi đã rất ngạc nhiên khi phát hiện ra rằng mã trong lời hứa vẫn tiếp tục thực thi sau khi một giải quyết hoặc từ chối được gọi.
Tôi coi giải quyết hoặc từ chối là một phiên bản thoát hoặc trả lại không thân thiện với đồng bộ, điều này sẽ tạm dừng tất cả việc thực thi chức năng ngay lập tức.
Ai đó có thể giải thích suy nghĩ đằng sau lý do tại sao ví dụ sau đôi khi hiển thị console.log sau một cuộc gọi giải quyết:
var call = function() {
return new Promise(function(resolve, reject) {
resolve();
console.log("Doing more stuff, should not be visible after a resolve!");
});
};
call().then(function() {
console.log("resolved");
});
resolve()
không phải là một câu lệnh điều khiển JS có tác dụng một cách kỳ diệureturn
, nó chỉ là một lời gọi hàm và vâng, việc thực thi tiếp tục sau đó.