专栏首页菜鸟前端工程师JavaScript学习笔记015-Promise0Async0try catch

JavaScript学习笔记015-Promise0Async0try catch

Author:Mr.柳上原

  • 付出不亚于任何的努力
  • 愿我们所有的努力,都不会被生活辜负
  • 不忘初心,方得始终

总是鼓励别人乐观

自己却有些悲观

。。。。。。

<!DOCTYPE html> <!-- 文档类型:标准html文档 -->

<html lang='en'> <!-- html根标签 翻译文字:英文 -->

<head> <!-- 网页头部 -->

<meat charset='UTF-8'/> <!-- 网页字符编码 -->

<meat name='Keywords' content='关键词1,关键词2'/>

<meat name='Description' content='网站说明'/>

<meat name='Author' content='作者'/>

<title>前端59期学员作业</title> <!-- 网页标题 -->

<link rel='stylesheet' type='text/css' href='css/css1.css'/> <!-- 外链样式表 -->

<style type='text/css'> /*内部样式表*/

</style>

</head>

<body> <!-- 网页主干:可视化区域 -->

<script>
/*
try catch:
错误捕获
try语句允许我们定义在执行时进行错误测试的代码块
catch 语句允许我们定义当 try 代码块发生错误时,所执行的代码块
finally 语句在 try 和 catch 之后无论有无异常都会执行
 catch 和 finally 语句都是可选的
catch 块会捕捉到 try 块中的错误,并执行代码来处理它
throw语句抛出一个错误
*/
// try catch的使用
function myFunction() {
                let x;
       try { 
            if(a == "") throw "is Empty";
            if(isNaN(x)) throw "not a number";
            if(x > 10) throw "too high";
            if(x < 5) throw "too low";
       } catch(err) {
             console.log(err);
        }
}

/*
promise:承诺,用于解决异步编程
状态:进行中,成功,失败
全封闭模式:一旦启动了一个promise,外部再也无法改变它内部的状态
关注点:成功(resolve),失败(reject)

当程序有大量计算时,会消耗大量系统资源,所以会使用异步编程的方式(回调函数)来组织代码
event.addListener("end", function(res){} );

*/
// promise的使用
new Promise((resolve, reject) => {
setTimeout(() => {
try {
console.log(123); // 事件结束
resolve(`成功:${123}`);
} catch (error){
reject(`失败:${error}`);
}
}, 200)
// then是Promise原型上的方法,会返回一个全新的promise方法,下一个then接受成功还是失败事件,取决于上一个then的return的值是成功还是失败
}).then((res) => { // 成功回调
if (res){
setTimeout(() => {
console.log(res);
}, 200)
}
return res; // 返回数据给下一个then
}, (rej) => { // 失败回调
console.log(rej);
}).then((res) => {
console.log(res);
return new Promise((resolve, reject) => reject("失败");
}).catch(error => { // catch专门用来接受promise的失败状态
console.log(error);
})

let p1 = new Promise(() => {});
let p2 = new Promise(() => {});
let p3 = new Promise(() => {});
// all方法
let p = Promise.all([p1, p2, p3]) // 当所有集合里p都成功时才成功
// race方法
let p =  Promise.race([p1, p2, p3]) // 当最先得出值的集合里p的状态就是p的状态
// reject方法
let p = Promise.reject("失败") // 立即返回失败的状态
// resolve方法
let p = Promise.resolve("成功") // 立即返回成功的状态

/*
async:generator函数的语法糖
语法糖:给计算机语言添加新功能,对开发者更加亲切甜蜜易读的语法
*/
// async使用方法
async function fn( ){
let res = await new Promise((resolve) => {
setTimeout(() => {
console.log("异步成功");
resolve("返回成功值")
}, 100)
})
console.log(res);
}
fn( );

</script>

</body>

</html>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • react-开发经验分享-Select选择框表单实现异步省市联动

    Mr. 柳上原
  • JavaScript学习笔记021-常用排序算法

    Mr. 柳上原
  • JavaScript学习笔记023-对象方法0包装对象0静态属性

    Mr. 柳上原
  • PowerDesigner使用方法

    我们需要创建一个测试数据库,一步一步来学习使用PowerDesigner,为了简单,我们在这个数据库中只创建一个Student表和一个Major表.其表结构和关...

    写代码的猿
  • 线性分类器 VS 非线性分类器

    在这一小节,我展示了Naive Bayes和Rocchio这两个学习方法,它们都属于线性分类器,大概也是文本分类器中最重要的一组,接着我把它们和非线性分类器做了...

    CSDN技术头条
  • 线性分类器 VS 非线性分类器

    用户1737318
  • 【机器学习笔记】:从零开始学会逻辑回归(一)

    逻辑回归是一个非常经典,也是很常用的模型。之前和大家分享过它的重要性:5个原因告诉你:为什么在成为数据科学家之前,“逻辑回归”是第一个需要学习的

    1480
  • 云计算环境下IT人的职业选择

    三年以前,思科承诺将只解决云服务以外的各种云计算问题,作为其全面的云战略的一部分。它不希望与客户形成竞争关系。 但现在,思科宣布将在两年内投入10亿美...

    静一
  • 【机器学习笔记】:从零开始学会逻辑回归(一)

    逻辑回归是一个非常经典,也是很常用的模型。之前和大家分享过它的重要性:5个原因告诉你:为什么在成为数据科学家之前,“逻辑回归”是第一个需要学习的

    用户2769421
  • 建议大型项目用上Try Catch建议大型项目用上Try Catch

    我们在平时项目做功能的时候,经常会遇到崩溃的情况。如果是我们在开发测试阶段,我们可以找到原因修复。但是遇到已经上线,出现这种问题。要么使用JSPatch进行热修...

    君赏

扫码关注云+社区

领取腾讯云代金券