나는 아주 기본적인 예제 코드부터 시작하기 때문에 ES6 표준을 배우고 있습니다.ES6에서 콜백 코드를 약속하는 방법
JavaScript에 콜백 hells이 있으므로 콜백 사용을 피하고 싶습니다. 하지만 콜백 스타일 코드를 약속으로 변환하는 방법을 모르는 문제를 만났습니다. 나는 그런 코드가있는 경우 예를 들어
는
module.exports = (x, y, callback) => {
try {
if (x < 0 || y < 0) {
throw new Error('Rectangle dimensions are wrong.');
} else {
callback(null, {
perimeter() {
return (2 * (x + y));
},
area() {
return (x * y);
},
});
}
} catch (error) {
callback(error, null);
}
};
가 어떻게 그것을 ES6의 Promise
로 변환해야합니다 아래처럼 보인다? 콜백을 약속으로 변환하는 것이 권장되는 행동입니까?
이 예제를 읽었지만 결과는 사실 혼란 스러웠습니다. 콜백을 약속으로 다시 작성하기 전에 먼저 이것을 이해해야한다고 생각합니다.
let promise = new Promise(function(resolve, reject) {
console.log('Promise');
resolve();
});
promise.then(function() {
console.log('Resolved.');
});
console.log('Hi!');
// Promise
// Hi!
// Resolved
제 생각에 Promise
은 생성 직후 실행됩니다. 그러나 나는 then
메서드의 코드가 마지막으로 실행되는 이유를 알지 못합니다.
Promise/A + [here] (https://promisesaplus.com/)의 사양을 읽으면 2.2.4 및 관련 참고 3.1에 특히주의하십시오. 기본적으로'.then' 콜백은 비동기입니다. –