function sleep(ms, data) {
return new Promise(function (resolve) {
setTimeout(() => resolve(++data), ms);
});
}
sleep(1000, 0)
.then(() => console.log('Line 1'))
.then(() => console.log('Line 2'))
.then(() => console.log('Line 3'))
.then(() => console.log('Line 4'))
.then(() => console.log('Line 5'));
function sleep(ms, data) {
return new Promise(function (resolve) {
setTimeout(() => resolve(++data), ms);
});
}
sleep(1000, 0)
.then(function (data) {
console.log('Line 1: ', data);
return sleep(1000, data);
})
.then(function (data) {
setTimeout(() => console.log('Line 2: ', data), 1000);
})
.then(function (data) {
setTimeout(() => console.log('Line 3: ', data), 1000);
})
.then(function (data) {
console.log('Line 4: ', data);
})
.then(function (data) {
console.log('Line 5: ', data);
});
function sleep(ms, data) {
return new Promise(function (resolve) {
console.log(`Line ${data} : ${data}`);
setTimeout(() => resolve(++data), ms);
});
}
sleep(1000, 1)
.then(function (data) {
return sleep(1000, data);
})
.then(function (data) {
return sleep(1000, data);
})
.then(function (data) {
return sleep(1000, data);
})
.then(function (data) {
return sleep(1000, data);
});
function sleep(ms, data) {
return new Promise(function (resolve) {
console.log(`Line ${data} : ${data}`);
setTimeout(() => resolve(++data), ms);
});
}
sleep(1000, 1)
.then(function (data) {
return sleep(1000, data);
})
.then(function (data) {
return new Promise(function (resolve, reject) {
reject();
});
})
.then(function (data) {
return sleep(1000, data);
})
.then(function (data) {
return sleep(1000, data);
});
function sleep(ms, data) {
return new Promise(function (resolve) {
console.log(`Line ${data} : ${data}`);
setTimeout(() => resolve(++data), ms);
});
}
sleep(1000, 1)
.then(function (data) {
return sleep(1000, data);
})
.then(function (data) {
return new Promise(function (resolve, reject) {
reject('Dừng lại!');
});
})
.then(function (data) {
return sleep(1000, data);
})
.then(function (data) {
return sleep(1000, data);
})
.catch(function (err) {
console.error(err);
});
var newPromise = new Promise(function (resolve, reject) {
resolve('Success!');
});
newPromise.then(function (result) {
console.log('Result: ', result);
});
// Result: Success!
Promise.resolve
var newPromise = Promise.resolve('Success!');
newPromise
.then(function (result) {
console.log('Result: ', result);
})
.catch(function (err) {
console.log('Error: ', err);
});
// Result: Success!
new Promise
, cũng như function xử lý Logic phân nhánh.var newPromise = new Promise(function (resolve, reject) {
// resolve('Success!');
reject('Failure!');
});
newPromise
.then(function (result) {
console.log('Result: ', result);
})
.catch(function (err) {
console.log('Error: ', err);
});
// Error: Failure!
var newPromise = Promise.reject('Failure!');
newPromise
.then(function (result) {
console.log('Result: ', result);
})
.catch(function (err) {
console.log('Error: ', err);
});
// Error: Failure!
new Promise
, cũng như function xử lý Logic phân nhánh, viết thẳng luôn thành Promise.reject(err)
Promise.all sẽ giúp chạy song song nhiều xử lý bất đồng bộ Promise thay vì viết thành nhiều khối lệnh tách rời, ta sẽ gom chung lại thành 1 mảng để xử lý.
function tOut(t) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(`Completed in ${t} ms`);
}, t);
});
}
var time_start = new Date();
// Resolving a normal promise
tOut(1000)
.then(function (res) {
console.log('Task 1: ', res);
return tOut(4000);
})
.then(function (res) {
console.log('Task 2: ', res);
return tOut(6000);
})
.then(function (res) {
console.log('Task 3: ', res);
console.log('Total time normal promise: ', new Date() - time_start);
});
// Promise.all
//prettier-ignore
Promise.all([tOut(1000), tOut(4000), tOut(6000)])
.then(function (res) {
console.log('Total time Promise.all: ', new Date() - time_start);
}
);
var pr1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve([1, 2]);
}, 4000);
});
var pr2 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve([3, 4, 5]);
}, 4000);
});
Promise.all([pr1, pr2]).then((res) => {
console.log('Result: ', res);
console.log(res[0].concat(res[1]));
});
var pr1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve([1, 2]);
}, 4000);
});
var pr2 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve([3, 4, 5]);
}, 4000);
});
var pr3 = Promise.reject('Error');
Promise.all([pr1, pr2, pr3])
.then((res) => {
console.log('Result: ', res);
console.log(res[0].concat(res[1]));
})
.catch((err) => {
console.error(err);
});
function load1() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve([1, 2]);
}, 2000);
});
}
function load2() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve([3, 4, 5]);
}, 3000);
});
}
var time_start = new Date();
var arr = [];
// Resolving a normal promise
load1()
.then(function (res1) {
console.log(`Task 1: Completed in ${new Date() - time_start} ms`);
arr = arr.concat(res1);
return load2();
})
.then(function (res2) {
console.log(`Task 2: Completed in ${new Date() - time_start} ms`);
arr = arr.concat(res2);
console.log(
`Completed Single Promise in ${new Date() - time_start} ms : `,
arr
);
});
// Resolving Promise.all
Promise.all([load1(), load2()]).then(function (res) {
console.log(
`Completed Promise.all in ${new Date() - time_start} ms : `,
res[0].concat(res[1])
);
});