BLOG

非同期処理メモ④

おはようございます。

最近1日が平日も土日もとてつもなく速く感じる症候群に侵されておりますどうもハヤトワンです。

今年もあと一ヶ月と半分か〜

はい、ということで昨日の続きです。

非同期処理メモ③

今日はsetTimeoutを使って非同期処理を実装してみます。


※setTimeoutとは

一定時間後に特定の処理をおこなう処理(繰り返さずに一度だけ)

構文:

setTimeout(関数function, 一定時間の指定[, 引数1, 引数2, …])

functionは関数の定義、

コンマで区切って一定時間の指定(ミリ秒)、

functionが引数をとる場合には[  ]のなかで指定する。


new Promise(function(resolve, reject){
    console.log('promise');
    // reject('bye')ここコメントアウト
//ここから
    setTimeout(function() {
        resolve('hi');
    },1000)
//ここまで追加
}).then(function(data){
    console.log('then:' + data);
    return data;
    // throw new Error();
}).then(function(data){
    console.log('then:' + data);
    return data;
}).then(function(data){
    console.log('then:' + data);
    return data;
}).catch(function(data){
    console.log('catch:' + data)
}).finally(function(data){
    console.log('finally')
})

console.log('global end')


こうすると

コンソール

promise
global end
then:h1
then:h1
then:h1
finally

最初にpromiseとglobal endが出力され、

一秒後にthen:hiから下が出力される

rejectの場合も同様

new Promise(function(resolve, reject){
    console.log('promise');
    // resolve('hi');コメントアウト
  //ここから
    setTimeout(function() {
        reject('bye')
    },1000)
  //ここまでを追加
}).then(function(data){
    console.log('then:' + data);
    return data;
    // throw new Error();
}).then(function(data){
    console.log('then:' + data);
    return data;
}).then(function(data){
    console.log('then:' + data);
    return data;
}).catch(function(data){
    console.log('catch:' + data)
}).finally(function(data){
    console.log('finally')
})

console.log('global end')


こうすると

コンソール

promise
global end
catch:bye
finally

同じくpromiseとglobal endが先に出力され、

一秒後にcatch:byeから出力される。

といった感じ。

こういう処理で時間差を表現できるんですね。

明日はプロミスチェーンというものについてまとめてみようと思います。

それでは本日も良い1日を!