璇﹁ВPromise鐨勭敤娉?鍚獷S7)
Promise鏄竴绉嶇敤鏉ュ鐞嗗紓姝ユ搷浣滅殑鏈哄埗锛屽彲浠ョ敤浜庤В鍐冲洖璋冨湴鐙辩殑闂銆傚畠鐨勬牳蹇冩€濇兂鏄皢寮傛鎿嶄綔灏佽鎴愪竴涓狿romise瀵硅薄锛岄€氳繃閾惧紡璋冪敤鐨勬柟寮忔潵澶勭悊寮傛鎿嶄綔鐨勭粨鏋溿€?/p>
Promise瀵硅薄鏈変笁绉嶇姸鎬侊細pending锛堣繘琛屼腑锛夈€乫ulfilled锛堝凡鎴愬姛锛夊拰rejected锛堝凡澶辫触锛夈€備竴鏃romise瀵硅薄鐨勭姸鎬佸彉涓篺ulfilled鎴杛ejected锛屽氨浼氳皟鐢ㄧ浉搴旂殑鍥炶皟鍑芥暟銆?/p>
Promise瀵硅薄鐨勫熀鏈敤娉曞涓嬶細
1.鍒涘缓Promise瀵硅薄锛?/p>
const promise = new Promise((resolve, reject) => {
// 寮傛鎿嶄綔
// 濡傛灉鎿嶄綔鎴愬姛锛岃皟鐢╮esolve鏂规硶骞朵紶鍏ョ粨鏋?/span>
// 濡傛灉鎿嶄綔澶辫触锛岃皟鐢╮eject鏂规硶骞朵紶鍏ラ敊璇俊鎭?/span>
});
2.澶勭悊Promise瀵硅薄鐨勭粨鏋滐細
promise
.then(result => {
// 澶勭悊鎴愬姛鐨勭粨鏋?/span>
})
.catch(error => {
// 澶勭悊澶辫触鐨勭粨鏋?/span>
});
3.鍦≒romise瀵硅薄涓彲浠ュ祵濂楀叾浠栧紓姝ユ搷浣滐細
const promise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('success');
}, 1000);
});
promise
.then(result => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(result.toUpperCase());
}, 1000);
});
})
.then(result => {
console.log(result); // SUCCESS
})
.catch(error => {
console.error(error);
});
ES7涓紩鍏ヤ簡async/await鍏抽敭瀛楋紝鍙互鏇存柟渚垮湴浣跨敤Promise銆備娇鐢╝sync鍏抽敭瀛楀畾涔変竴涓紓姝ュ嚱鏁帮紝鍏朵腑鍙互浣跨敤await鍏抽敭瀛楁潵绛夊緟寮傛鎿嶄綔鐨勭粨鏋溿€?/p>
4.async/await鐨勫熀鏈敤娉曪細
async function getData() {
try {
const result1 = await asyncFunc1();
const result2 = await asyncFunc2(result1);
console.log(result2);
} catch (error) {
console.error(error);
}
}
鍏朵腑锛宎syncFunc1鍜宎syncFunc2閮芥槸杩斿洖Promise瀵硅薄鐨勫紓姝ュ嚱鏁般€?/p>
閫氳繃async/await鍙互浣垮紓姝ヤ唬鐮佺湅璧锋潵鏇村儚鍚屾浠g爜锛屾彁楂樺彲璇绘€с€備絾闇€瑕佹敞鎰忕殑鏄紝await鍙兘鍦╝sync鍑芥暟鍐呴儴浣跨敤銆?/p>
相关问答