I.如何promisify函數?javascript
let getChuckNorrisFact = (url) => {
return new Promise((resolve, reject) => {
request.get(url, function(error, response, data){
if (error) reject(error);
resolve(data);
})
}
);
};
複製代碼
II.如何consume一個promise?java
法1、then和catchpromise
getChuckNorrisFact(url).then(
data => console.log(data) // actually outputs a string
).catch(
error => console.(error)
);
複製代碼
法2、async和awaitbash
async func ()=>{
try(){
let data=await getChuckNorrisFact(url);
console.log(data);
} catch (e) {
console.log(e);
}
複製代碼
注意
a. await已經consume了promise自動獲取的是then的值
b.若是要catch,則是try catch方式
複製代碼
解釋 async
III.如何在promise裏面throw error?ide
const example = () => {
return new Promise((resolve, reject) => {
service(url,(err,res)=>{
throw new Error("test error inside promise");
reject(false);
}
});
};
async function () {
try {
await example();
} catch (e) {
console.error(`try/catch(${e})`);
}
}
複製代碼
這樣不行,throw捕捉不到!函數
結論:ui
參考url
mrcoles.com/javascript-… javascript.info/async-await www.kancloud.cn/kancloud/pr… www.freecodecamp.org/news/how-to…spa