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