Javascript中Promise的简单使用
// 函数功能:1秒以后创建一个10以内的随机整数,并判断这个数是否为偶数;如果是偶数则做一件事情,如果是奇数则做另一件事情
function doSomthing() {
var promise = new Promise(function (resolve, reject) {
setTimeout(function () {
const num = Math.round(Math.random() * 10);
if (num % 2 === 0) {
resolve(num);
} else {
reject(num);
}
}, 1000);
});
return promise;
}
// 调用方法,得到Promise对象,并在Promise中的事情执行完成之前,预先指定成功和失败的回调函数
// 成功和失败的回调函数,分别对应new这个Promise对象时,传递的匿名function中的resolve和reject这两个形参
doSomthing().then(function (val) {
console.log('第一次偶数:' + val);
return doSomthing(); // 当事情处理完毕之后,可以return一个新的Promise对象,并继续使用.then指定下一次的回调函数
}, function (val) {
console.log('第一次奇数:' + val);
return doSomthing();
}).then(function (val) {
console.log('第二次偶数:' + val);
return doSomthing();
}, function (val) {
console.log('第二次奇数:' + val);
return doSomthing();
}).then(function (val) {
console.log('第三次偶数:' + val);
}, function (val) {
console.log('第三次奇数:' + val);
});
- Promise表示要做一件事,要做的事情,需要在new Promise对象的时候指定
- 一旦这个Promise对象new出来之后,则立即就会去做这个Promise对象中指定的事情(所以如果不想立即做这件事,可以将new Promise对象的过程放在一个方法中)
- 做任何事情都有一个过程,所以在这个Promise中的事情做完之前,我们不知道这件事最终执行的结果是成功还是失败,
- 但我们可以肯定的是,这个事情做完之后,肯定有一个执行的结果,要么这件事做成功了,要么这件事做失败了,且会将这个执行结果进行相关操作;
- 所以,我们可以提前为这个Promise对象,通过resolve方法指定成功之后的处理函数,通过reject方法指定失败之后的处理函数
- 那么,如何提前指定resolve和reject这两个处理函数呢?可以在Promise对象身上,调用.then(成功回调函数,失败回调函数)方法预先指定成功和失败的处理函数!
- 这样,当Promise对象中的事情做完之后,就会调用预定义的成功或失败处理函数
- 在成功和失败的处理函数内部,又可以创建一个新的Promise对象,来执行下一件事情,并通过下一个.then预先指定成功和失败的回调函数!
Javascript中Promise的简单使用的更多相关文章
- 全面理解Javascript中Promise
全面理解Javascript中Promise 最近在学习Promise的时候,在网上收集了一些资料,发现很多的知识点不够系统,所以小编特意为大家整理了一些自认为 比较好的文章,供大家更好地学习js中非 ...
- javascript中闭包最简单的简绍
javascript中闭包是什么 JavaScript 变量可以是局部变量或全局变量.私有变量可以用到闭包.闭包就是将函数内部和函数外部连接起来的一座桥梁. 函数的闭包使用场景:比如我们想要一个函数来 ...
- JavaScript中 Promise的学习以及使用
今天一个哥们发过来一段js代码,没看懂,就顺便学习了一下,代码如下 Promise.resolve('zhangkai').then(value => {console.log(value)} ...
- javascript 中 Promise的使用
有点经验的js前端都知道 ajax异步函数里面的结果不会立即返回,如果你想在一个异步函数得到某个结果后去执行一个语句怎么做? if ( 异步函数 ) { 语句 } 可能很多人都踩过这样坑,这个时候 ...
- 浅谈Javascript中Promise对象的实现
https://segmentfault.com/a/1190000000684654 What? Promise是CommonJS的规范之一,拥有resolve.reject.done.fail.t ...
- JavaScript中对事件简单的理解(1)
事件(event) 1.什么是JavaScript事件? 事件是文档或浏览器中发生的特定交互瞬间. 2.事件流 事件流描述的是从页面中接受事件的顺序,包含IE提出的事件冒泡流与Netscape提出的事 ...
- JavaScript中对事件简单的理解
事件(event) 1.什么是JavaScript事件? 事件是文档或浏览器中发生的特定交互瞬间. 2.事件流 事件流描述的是从页面中接受事件的顺序,包含IE提出的事件冒泡流与Netscape提出的事 ...
- JavaScript中Promise 使用、原理以及实现过程
1.什么是 Promise promise 是目前 JS 异步编程的主流解决方案,遵循 Promises/A+ 方案. 2.Promise 原理简析 (1)promise 本身相当于一个状态机,拥有三 ...
- JavaScript中对事件简单的理解(2)
事件(event) event对象 (1)什么是event对象? Event 对象代表事件的状态,比如事件在其中发生的元素.键盘按键的状态.鼠标的位置.鼠标按钮的状态.事件通常与函数结合使用,函数不会 ...
随机推荐
- 杭电多校第二场 1005 hack it
题意: 构造一个n*n 的 01 矩阵, 0 < n < 2001, 矩阵需要满足没有一个子矩阵的4个角都是1,并且矩阵内1的个数至少有85000个. 题解:数论构造题 参考From 代 ...
- codeforces 876 F. High Cry(思维)
题目链接:http://codeforces.com/contest/876/problem/F 题解:一道简单的思维题,知道最多一共有n*(n+1)/2种组合,不用直接找答案直接用总的组合数减去不符 ...
- atcoder E - Jigsaw(思维)
题目链接:http://agc017.contest.atcoder.jp/tasks/agc017_e 题解:这题很巧妙运用了cnt[i]抽象的表示了上下互补的状态,最后上面突出的一定要处理完.下面 ...
- 2018 Multi-University Training Contest 1(部分题解)
Maximum Multiple Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 【Offer】[14] 【剪绳子】
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 给你一根长度为n绳子,请把绳子剪成m段(m.n都是整数,n>1并且m≥1).每段的绳子的长度记为k[0].k[1].--.k[m] ...
- DB-Lib error message 20002, severity 9
完整报错内容:20002, b'DB-Lib error message 20002, severity 9:\nAdaptive Server connection failed (I0.185.4 ...
- c语言实现去除字符串首尾空格
字符串内存图如下: 引入头文件: 1 #include<stdlib.h> 2 #include<stdio.h> 3 #include<string.h> 函数原 ...
- SpringBoot启动原理
SpringBoot启动原理 我们开发任何一个Spring Boot项目,都会用到如下的启动类: @SpringBootApplication public class Application { p ...
- 每个Java开发人员都应该知道的10个基本工具
大家好,我们已经在2019年的第9个月,我相信你们所有人已经在2019年学到了什么,以及如何实现这些目标.我一直在写一系列文章,为你提供一些关于你可以学习和改进的想法,以便在2019年成为一个更好的. ...
- 自定义JDBC工具类
因为数据库的连接代码都是固定的,为了将减少重复的代码的书写,可以将这些代码封装为一个工具类,获取数据库的连接对象. import java.sql.Connection; import java.sq ...