내 사용 사례:
더 좋은 디자인 패턴이 있나요?
으아악몇 가지 댓글을 읽은 후 코드를 대폭 단순화했습니다.
let twoStagePromise = (state: boolean): Promise<{ ready: boolean, wait: Promise<any>; }> => { return new Promise((resolve, reject) => { try { if (state) { resolve({ ready: true, wait: new Promise((resolve, reject) => { resolve([1, 2, 3]); }) }); } else { resolve({ ready: false, wait: new Promise((resolve, reject) => { setTimeout(() => { resolve([1, 2, 3]); }, 1000); }) }); } } catch (e) { reject(e); } }); }; twoStagePromise(false).then((data) => { if (!data.ready) { console.log('loading...'); } return data.wait; }).then((result) => { console.log("recieved result", result); }).catch((error) => { console.log("try-catch failed or inner promise failed") });
값이나 약속을 명시적으로 반환하는 함수를 만들 수 있습니다. 어쨌든 쉽게 할 수 있어요
으아아아await
了。要检查结果是否同步,请使用result instanceof Promise