1.Promise.resolveメソッドは既存のオブジェクトをプロミスオブジェクトに変換できます。
//
1.
let p = Promise.resolve('foo');
//
2.
let p = new Promise(resolve=>resolve('foo'));
p.then((data)=>{
console.log(data); //foo
})
2.Promise.allメソッド:非同期オペレーションが完了してからオペレーションを実行します。
アプリケーションシナリオ
- ゲームによっては素材が多く、ページを初期化する前にイメージ、フラッシュ、静的リソースファイルの読み込みが終わるのを待ちます。
let promise1 = new Promise((resolve, reject) => {resolve(1)});
let promise2 = new Promise((resolve, reject) => {resolve(2)});
let promise3 = new Promise((resolve, reject) => {resolve(3)});
let p4 = Promise.all([promise1, promise2, promise3])
p4.then((res)=>{
console.log(res);//[1, 2, 3]
// 3つとも成功すれば成功である。
}).catch(err=>{
console.log(err);
// どちらかが失敗すれば、失敗となる。
})
- Promise1、Promise2、Promise3 のリクエストは、すべて成功してから成功したとみなされます。
3. Promise.raceメソッド:タイムアウトを設定し、タイムアウト後に対応するアクションを実行する非同期リクエスト。
//1 イメージリソースを要求する
function requestImg(imgSrc) {
return new Promise((resolve, reject) => {
const img = new Image();
img.onload = function () {
resolve(img);
}
img.src = imgSrc;
});
}
function timeout() {
return new Promise((resolve, reject) => {
setTimeout(() => {
reject(new Error('イメージリクエストタイムアウト'));
}, 3000);
})
}
Promise.race([requestImg('https://../?&;=&;=_&;=&;=&;=&;=%%%..%%%%%_.pg'),ut()]).(ta=>{
console.log(data);
document.body.appendChild(data);
}).catch(err=>{
console.log(err);
});
- タイムアウト時間を超えてもパケットデータが返されない場合、"image request timeout "と出力されます。