「JavaScript/変数」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
タグ: 2017年版ソースエディター
303 行
::実行環境がタイム・アウトする関係で、500msインターバルにしました。
:これで当初の「1 秒間隔で 0, 1, 2 と出力するプログラム」は達成できました。
 
== Promiseを使った実装 ==
Promiseを使うと、非同期処理のコールバック地獄から開放されます。
;[https://paiza.io/projects/Pb_QX4Y6m1MiecNU_GIYgw?language=javascript Promiseを使った実装]:<syntaxhighlight lang="JavaScript">
function sleep(ms) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(ms)
}, ms)
})
}
var start = Date.now()
 
for (let i = 0; i < 3; i++) {
sleep(500 * i).then(
() => console.log(Date.now() - start, "ms: ", i)
)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang="JavaScript">
2 ms: 0
501 ms: 1
1001 ms: 2
</syntaxhighlight>
:Prpomiseオブジェクトを返す sleep() を定義しています。
:sleepを引数で与えられたミリ秒後に、Callable オブジェクト resolve を実行するものです。
 
=== ブロックスコープ ===