# Promise - resolve,reject
16232 ワード
promise !? 🔮
定義#テイギ#
Promisは、JavaScriptが提供する非同期を容易に処理できるES 6に導入された機能です.
長時間のプロジェクトが完了すると、機能が正常に動作している場合は、成功したメッセージと処理値が渡され、機能の実行中に問題が発生した場合はエラーが発生します.
使用方法を承諾します!🎃
promiseは、新しいPromiseを生成するとすぐにexecutor(実行関数に解析パラメータと拒否パラメータを渡す)と呼ばれるコールバック関数を実行します.
let promise = new Promise(function(resolve, reject) {
// 여기 비동기 로직을 작성!
// 시켜놓고 언제 완료될지 모르는 로직!
});
Promiseオブジェクトはnewキーワードとジェネレータを使用して作成されます.パラメータとしてexecutorを受け入れます.このパラメータは2つの関数を受け入れなければなりません.
1つ目はresolve(成功時に実行)、2つ目はexecute(失敗時に実行)です.
let promise = new Promise(function(resolve, reject) {
resolve(); // 에러 안 납니다.
reject();
console.log('실행 됨');
});
どうやって決意を書きますか?!💢
let promise = new Promise(function(resolve, reject) {
// 여기 비동기 로직을 작성!
// 시켜놓고 언제 완료될지 모르는 로직!
// 완료 하면 -> resolve 호출
// 비동기 동작 실패 하면 -> reject 호출
});
promise.then(function() {
// 이 함수가 바로 위의 resolve 입니다.
// 위의 비동기 로직이 성공하면 호출 됩니다!
});
promiseのprototypeでthen関数を実行し、パラメータとしての関数を追加します.その関数は解決を意味します!(2つの関数が入っている場合、1つ目はresolve関数でしょうか?)
こちらです.何ですか.🖊
Promise.prototype.then()
その後()メソッドはpromiseを返し,パラメータとして2つのコールバック関数を受け入れる.
p.then(onFulfilled, onRejected);
let promise = new Promise(function(resolve, reject) {
});
// then 인자 둘 다 callback 함수
// 첫 번째는 성공했을 때 실행할 resolve 함수 정의
// 두 번째는 실패했을 때 실행할 reject 함수 정의
promise.then(function() {}, function() {});
サンプルコード📝
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
// resolve 함수에 인자 넘기면
resolve('hello world');
}, 2000);
});
// resolve로 넘기는 콜백함수의 매개변수로 받을 수 있다.
promise.then(function(msg) {
console.log(msg); // 2초 뒤에 hello world!
});
promiseにsettimeout関数があるので、2秒後に解決がスムーズに実行されます.それなら承知します.次に、resolve実行時に渡されるパラメータを2秒後にコンソールで撮影します.
廃品の使い方が似ている💢💢
次の例では、失敗したと仮定し、拒否後承諾を呼び出します.次に、2番目の関数は拒否関数を定義します.
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
// 실패한 건 아니지만, 실패했다고 가정하고 reject 호출
reject('으악!');
}, 2000);
});
promise.then(function() {
console.log('resolve');
}, function(msg) {
console.log('reject', msg);
});
注意事項
-どんなに大きなresolveとexecuteが呼び出されても、最終的には1つの結果しか呼び出されません。😾
👇最初の解析のみを実行
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve(1);
resolve(2);
}, 1000);
});
promise.then(function(msg) {
console.log(msg);
});
👇最初の拒否のみを実行
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
reject(1);
resolve(2);
resolve(3);
}, 1000);
});
promise.then(function(msg) {
console.log('resolve', msg);
}, function(msg) {
console.log('reject', msg);
});
Reference
この問題について(# Promise - resolve,reject), 我々は、より多くの情報をここで見つけました https://velog.io/@zhd5379/JavaScript-Promise-resolverejectテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol