■同期処理と非同期処理
→同期処理とは、1スレッドの中で上から下へとソースコードが実行されること
→同期処理では一つの処理が終了するまで、他の処理は行われない
→非同期処理は、メインスレッドから外れて別の処理を裏で実行する
→完了後、再度メインスレッドに戻ってくる
→非同期処理を裏で行っている際に、メインでは別の処理を行うことができる
■非同期処理について
→非同期処理はタスクキューにファーストイン・ファーストアウトの形で処理される
→コールスタック(メインスレッド)に処理が残っている間は、タスクキューに積まれた処理は実行されない
→コールスタックが空になると、やっとタスクキューの処理が実行されれる
■Promiseについて(ES6以降)
function sleep(callback, val) {
setTimeout(function() {
console.log(val++);
callback(val);
}, 1000)
}
sleep(function(val) {
sleep(function(val) {
console.log('callback done')
}, val)
}, 0)
→sleepを何回も呼び出すことで、非同期処理のチェーンを作成することができる
→しかし、今は2回で住んでいるが100回となるとソースが助長的になり、ネストも深くなってしまう
→その際にPromiseを使用する
// promiseの構文
new Promise(function() {
}).then(function(data) {
// 非同期処理
}).catch(function(data) {
// 非同期処理
}).finally(function(){
// 非同期処理
});