前提・実現したいこと
2点お聞きしたいことがあります。
1:Promiseを使用する場合、下記設定パターン1~3がありますが、どれがベストな設定になりますでしょうか。rejectやtry(catch)などを使用した方がよいのか、よくわかりません…
2:呼び出し下記呼び出しパターン1~2がありますが、この場合「catch」を設定した方がよろしいでしょうか。あまり「catch」を設定するメリットを感じていません。なのでその部分を教えて頂ければ幸いです。
質問1コード
javascript
1//設定 パターン1 2const readScript = () => { 3 return new Promise((resolve, reject) => { 4 const script = document.createElement('script'); 5 script.setAttribute('src', 'test.js'); 6 script.setAttribute('charset', 'utf-8'); 7 document.getElementsByTagName('body')[0].appendChild(script); 8 script.onload = script.onreadystatechange = () => { 9 if (!this.readyState || this.readyState === 'loaded' || this.readyState === 'complete') { 10 resolve('成功'); 11 } 12 }; 13 }); 14};
javascript
1//設定 パターン2 2const readScript = () => { 3 return new Promise((resolve, reject) => { 4 const script = document.createElement('script'); 5 script.setAttribute('src', 'test.js'); 6 script.setAttribute('charset', 'utf-8'); 7 document.getElementsByTagName('body')[0].appendChild(script); 8 script.onload = script.onreadystatechange = () => { 9 if (!this.readyState || this.readyState === 'loaded' || this.readyState === 'complete') { 10 resolve('成功'); 11 } else{ 12 reject('失敗'); 13 } 14 }; 15 }); 16};
javascript
1//設定 パターン3 2const readScript = () => { 3 return new Promise((resolve, reject) => { 4 try { 5 const script = document.createElement('script'); 6 script.setAttribute('src', 'test.js'); 7 script.setAttribute('charset', 'utf-8'); 8 document.getElementsByTagName('body')[0].appendChild(script); 9 script.onload = script.onreadystatechange = () => { 10 if (!this.readyState || this.readyState === 'loaded' || this.readyState === 'complete') { 11 resolve('成功'); 12 } else{ 13 reject('失敗'); 14 } 15 }; 16 } catch(e) { 17 reject(e); 18 } 19 }); 20};
質問2コード
javascript
1//呼び出し パターン1 2readScript().then((value) => { 3 console.debug(value); 4}).catch((error) => { 5 console.debug(error); 6});
javascript
1//呼び出し パターン2 2readScript().then((value) => { 3 console.debug(value); 4});
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/15 15:04