Promise
là một lời hứa xử lý một vấn đề nào đó.Promise
là một đối tượng xử lý Bất đồng bộPromise
là một Object Constructor
được cập nhật JavaScript từ phiên bản ECMAScript-06 (năm 2015)new Promise
đơn giản từ một Object Constructor
Promise
có sẵn theo cấu trúc sau:var newPromise = new Promise(
// Executor : Khối lệnh xử lý trước khi gán cho đối tượng newPromise
function (resolve, reject) {
//Logic: Xử lý Logic
// 1. Thành công/Xử lý: resolve()
// 2. Thất bại/Từ chối: reject()
}
);
newPromise.then().catch().finally();
newPromise
.then(function () {
console.log("Successfully!");
})
.catch(function () {
console.log("Failure!");
})
.finally(function () {
console.log("Done!");
});
thành công
thì callback sẽ thực thi khối lệnh ở phương thức .then()từ chối
thì callback sẽ thực thi khối lệnh ở phương thức .catch() - bắt lỗi/bẫy lỗi
, ở đây có thể thông báo message lỗi cho người dùng.Loading
xử lý, khi kết thúc Promise thì tắt biểu tượng Loading
này đi.Memory Leak
Pending()
đang xử lý.var newPromise = new Promise((resolve, reject) => {
console.log("Xử lý Promise!");
// resolve()
// reject()
});
setTimeout(() => {
console.log(newPromise);
}, 1000);
var newPromise = new Promise((resolve, reject) => {
console.log("Xử lý Promise!");
resolve()
// reject()
});
setTimeout(() => {
console.log(newPromise);
}, 1000);
newPromise
// .then(function () {
// console.log("Successfully!");
// })
.catch(function () {
console.log("Failure!");
})
.finally(function () {
console.log("Done!");
});
var newPromise = new Promise((resolve, reject) => {
console.log("Xử lý Promise!");
resolve()
// reject()
});
setTimeout(() => {
console.log(newPromise);
}, 1000);
newPromise
.then(function () {
console.log("Successfully!");
})
.catch(function () {
console.log("Failure!");
})
.finally(function () {
console.log("Done!");
});
var newPromise = new Promise((resolve, reject) => {
console.log("Xử lý Promise!");
// resolve()
reject()
});
setTimeout(() => {
console.log(newPromise);
}, 1000);
newPromise
.then(function () {
console.log("Successfully!");
})
// .catch(function () {
// console.log("Failure!");
// })
.finally(function () {
console.log("Done!");
});
Uncaught (in promise) undefined
nghĩa là chưa xử lý bắt lỗi Reject bị thiếu.var newPromise = new Promise((resolve, reject) => {
console.log("Xử lý Promise!");
// resolve()
reject();
});
setTimeout(() => {
console.log(newPromise);
}, 1000);
newPromise
.then(console.log("Successfully!"))
.catch(console.log("Failure!"))
.finally(console.log("Done!"));
var newPromise = new Promise((resolve, reject) => {
console.log("Xử lý Promise!");
// resolve()
reject()
});
setTimeout(() => {
console.log(newPromise);
}, 1000);
newPromise
.then(function () {
console.log("Successfully!");
})
.catch(function () {
console.log("Failure!");
})
.finally(function () {
console.log("Done!");
});
var newPromise = new Promise((resolve, reject) => {
console.log("Xử lý Promise!");
// resolve()
reject()
});
setTimeout(() => {
console.log(newPromise);
}, 1000);
newPromise
.then(
function (resolve){
console.log("Successfully!");
},
function (error){
console.log("Error!")
}
)
.catch(function () {
console.log("Failure!");
})
.finally(function () {
console.log("Done!");
});
var newPromise = new Promise((resolve, reject) => {
console.log("Xử lý Promise!");
// resolve()
reject();
});
setTimeout(() => {
console.log(newPromise);
}, 1000);
newPromise
.then(
(resolve) => console.log("Successfully!"),
(error) => console.log("Error!")
)
.catch(() => console.log("Failure!"))
.finally(() => console.log("Done!"));
var newPromise = new Promise((resolve, reject) => {
console.log("Xử lý Promise!");
// resolve()
reject();
});
setTimeout(() => {
console.log(newPromise);
}, 1000);
newPromise
.then(
(resolve) => console.log("Successfully!"),
(error) => console.log("Error!")
).catch(console.log("Failure!"))
.finally(() => console.log("Done!"));
var newPromise = new Promise((resolve, reject) => {
console.log("Xử lý Promise!");
// Fake API data Promise
resolve("Học lập trình Javascript!!!")
});
setTimeout(() => {
console.log(newPromise);
}, 1000);
newPromise
.then(function (data) {
console.log("Successfully: ", data);
})
.catch(function () {
console.log("Failure!");
})
.finally(function () {
console.log("Done!");
});
var newPromise = new Promise((resolve, reject) => {
console.log("Xử lý Promise!");
// Fake API data Promise
resolve([
{
id: 1,
name: "Javascript"
},
{
id: 2,
name: "PHP"
},
{
id: 3,
name: "CSS"
},
])
});
setTimeout(() => {
console.log(newPromise);
}, 1000);
newPromise
.then(function (courses) {
console.log("Successfully: ", courses);
})
.catch(function () {
console.log("Failure!");
})
.finally(function () {
console.log("Done!");
});
var newPromise = new Promise((resolve, reject) => {
console.log("Xử lý Promise!");
// Fake API data Promise
reject([
{
id: 1,
name: "Javascript",
},
]);
});
setTimeout(() => {
console.log(newPromise);
}, 1000);
newPromise
.then(function (result) {
console.log("Successfully: ", result);
})
.catch(function (error) {
console.log("Failure: ", error);
})
.finally(function () {
console.log("Done!");
});
var newPromise = new Promise((resolve, reject) => {
console.log("Xử lý Promise!");
// Fake API data Promise
reject("Lỗi request Timeout!");
});
setTimeout(() => {
console.log(newPromise);
}, 1000);
newPromise
.then(function (result) {
console.log("Successfully: ", result);
})
.catch(function (error) {
console.log("Failure: ", error);
})
.finally(function () {
console.log("Done!");
});
var newPromise = new Promise((resolve, reject) => {
console.log("Xử lý Promise!");
// Fake API data Promise
reject(new Error("Lỗi request Timeout!"));
});
setTimeout(() => {
console.log(newPromise);
}, 1000);
newPromise
.then(function (result) {
console.log("Successfully: ", result);
})
.catch(function (error) {
console.error(error + '');
})
.finally(function () {
console.log("Done!");
});
var newPromise = new Promise((resolve, reject) => {
console.log("Xử lý Promise!");
// Fake API data Promise
reject(new Error("Lỗi request Timeout!"));
});
setTimeout(() => {
console.log(newPromise);
}, 1000);
newPromise
.then(function (result) {
console.log("Successfully: ", result);
})
// .catch(function (error) {
// console.error(error + '');
// })
.finally(function () {
console.log("Done!");
});
var newPromise = new Promise((resolve, reject) => {
console.log("Xử lý Promise!");
// Fake API data Promise
reject(new Error("Lỗi request Timeout!"));
});
setTimeout(() => {
console.log(newPromise);
}, 1000);
newPromise
.then(
function (result) {
console.log("Successfully: ", result);
},
function (error) {
console.error(error + "");
}
)
// .catch(function (error) {
// console.error(error + '');
// })
.finally(function () {
console.log("Done!");
});
new Promise
)callback
gồm 2 tham số resolve
và reject
(function(resolve, reject)
)Executor
) phân nhánh 1-Xử lý hoặc 2-Từ chối tương ứng:
callback
function(resolve, reject)
phải gọi hàm resolve()
hoặc hàm reject()
để tránh bị lỗi Memory Leak
(Lỗi rò rỉ bộ nhớ), câu lệnh chạy liên tục gây lãng phí bộ nhớ, bị treo không thành công hay thất bại..then((data) => console.log(data))
Hỏi: Trình bày khái niệm về Promise
Trả lời:
new Promise()