Promise

异步使用场景:

setTimeout, setInverval, 事件绑定,图片加载,Ajax请求等

 

在很多时候我们的js中, 比如 B需要依赖A, C又需要依赖B,。。。。

这时候我们很无奈的一步一步的使用回调函数来解决此类问题。  如果这样多起来,回调会越嵌套越深。

工作中很常见的是 B接口需要A接口的返回值之类的,就只能在A执行完在回调B接口了。

 

但是这种写法太不利于读写和错误排查和剖出了。

于是随着我们的ES6出现了一个非常好用的 Promise 对象,完美的解决了这一问题

 今天我们来看下Promise,

下面我们一起来看下语法:

 

好,我们按照语法写一个小例子:

 1 function loadImg(src){
 2         const promise = new Promise(function(resolve, reject){
 3             var img = new Image();
 4 //            throw new Error("自定义错误");
 5             img.onload = function(){
 6                 resolve(img)
 7             };
 8             img.onerror = function(){
 9                 reject("图片加载失败");
10             }
11             img.src = src;
12         })
13         return promise;
14     }
15     var url = "https://www.imooc.com/static/img/common/logo.png";
16     var url2 = "https://img1.mukewang.com/szimg/583e42fb0001e04f05400300-360-202.jpg";
17     var result = loadImg(url);
18     var result2 = loadImg(url2);
19     /* 用法一
20      * 串联调用 
21      * catch统一输出错误,不用每次写到then的第二个回调里面
22      * */
23     result.then(function(img){
24         console.log(img.width)
25         return result2;
26     }).then(function(img){
27         console.log(img.width)
28     }).catch(function(e){
29         console.log(e)
30     });
31     /**
32      * 用法二:
33      * 都执行完才执行回调 
34      * 返回所有执行的结果,是一个数组
35      */
36     Promise.all([result, result2]).then(function(datas){
37         console.log("all", datas[0].width);
38         console.log("all", datas[1].width)
39     });
40     
41     /*
42      * 用法三
43      * 有一个执行完就执行
44      * 返回第一个执行完的结果
45      * */
46     Promise.race([result, result2]).then(data=>{
47         console.log('race', data.width)
48     });

试着敲一遍,你可以把loadImg看成是一个 Ajax请求,

大概语法啊就这些,这些用法。 不明白的在看看文档对promise的解释吧  -^_ ^- 

这是我自己看过后总结的。

转载于:https://www.cnblogs.com/chenyajie/p/8947154.html

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值