문제: 생성자 내에서 async/await 구문을 활용하려고 시도 생성자 함수에서 "클래스 생성자가 비동기일 수 없습니다."라는 오류가 발생합니다. method."
원인: 비동기 함수는 promise를 반환하는 반면 생성자는 생성 중인 개체를 반환합니다. 이로 인해 충돌이 발생하여 async/await와 생성자를 동시에 활용하는 것이 불가능해집니다.
해결 방법:
1. 초기화 함수(init()):
사용:
var myObj = new myClass(); myObj.init(function() { // Use myObj within the callback });
구현:
class myClass { constructor () { } init (callback) { // Asynchronous operations and callback } }
2. 빌더 패턴:
사용:
myClass.build().then(function(myObj) { // Use myObj }); async function foo () { var myObj = await myClass.build(); }
구현:
class myClass { constructor (async_param) { if (async_param === undefined) { throw new Error('Cannot be called directly'); } } static build () { return doSomeAsyncStuff() .then(function(async_result){ return new myClass(async_result); }); } // Async/await equivalent: static async build () { var async_result = await doSomeAsyncStuff(); return new myClass(async_result); } }
참고: 빌더는 대신 콜백을 사용할 수 있습니다. promise.
정적 함수 내에서 함수 호출:
호출하려면 정적 함수의 인스턴스 메서드를 일반 함수 또는 정적 메서드로 만듭니다.
class A { static foo () { bar1(); // OK A.bar2(); // OK } static bar2 () {} } function bar1 () {}
위 내용은 JavaScript에서 객체 생성 중에 비동기 작업을 어떻게 처리할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!