JavaScript中 Promise的学习以及使用
今天一个哥们发过来一段js代码,没看懂,就顺便学习了一下,代码如下
var p=new Promise(function(resolve,eject){
resolve("ok");
});
p.then(function(value){console.log(val)},
function(err)(console.log(err))
);
then()方法的第一个参数是resolved状态的回调函数,第二个参数(可选)是rejected状态的回调函数。
有两种写法:
(1)Promise.resolve("foo");
所以才有了我这个哥们给我发的代码:Promise.resolve('zhangkai').then(value => {console.log(value)})
(2)var p = new Promise(function(resolve){ resolve("foo"); });
学习了Promise对象,想了想实际项目中的应用:
实际中有这么一个需求,查询学生的信息列表,有一个文本框可以输入学生的姓名,可以进行查找指定的学生信息,如果不存在就不进行学生信息列表的查询了,如果存在,再进行下一步的查询。(通过使用ajax实现)
首先,写一个通过ajax判断该学生是否存在的方法,然后,如果存在,写一个通过ajax查询该学生信息的方法;不存在的话,提示一下即可。
代码如下:
<script type="text/javascript">
//判断是否存在该学生姓名
var isExistStu = function (name) {
var promise = new Promise(function (resolve, reject) {
$.ajax({
type: "Post",
url: "/student/student/checkstu",
dataType: "json",
data: JSON.stringify({
name: name
}),
contentType: "application/json;charset-utf-8",
success: function (data) {
resolve(data); //data 返回来的是 true 或者 false
}
});
});
}
//查询根据学生姓名查询学生信息列表
var searchStu = function (name) {
var promise = new Promise(function (resolve, reject) {
$.ajax({
type: "Post",
url: "/student/student/getstulist",
dataType: "json",
data: JSON.stringify({
name: name
}),
contentType: "application/json;charset-utf-8",
success: function (data) {
resolve(data); //data 返回来的是学生信息列表
}
});
});
}
window.onload = function () {
var stuName = $("txtName").val();
isExistStu(stuName).then(function (data) {
if (data == "true") {
return searchStu(stuName);
}
else {
return;
}
}).then(function (data) {
showTable(data);
})
}
//展示 学生信息列表表格
function showTable(data) {
var html = "<table>";
for (var i = 0; i < data.length; i++) {
html += "<tr>";
html += "<td>" + data.name + "</td>";
html += "<td>" + data.address + "</td>";
html += "</tr>";
}
html += "</table>";
$("#divTable").html(html);
}
</script>
JavaScript中 Promise的学习以及使用的更多相关文章
- 全面理解Javascript中Promise
全面理解Javascript中Promise 最近在学习Promise的时候,在网上收集了一些资料,发现很多的知识点不够系统,所以小编特意为大家整理了一些自认为 比较好的文章,供大家更好地学习js中非 ...
- javascript中的正则表达式学习
一.前言 关于正则表达式自身的语法这里不做过多介绍(详情可参见http://www.php100.com/manual/unze.html),这里仅仅解释javascript中和正则表达式相关的几个方 ...
- JavaScript中的EcMAScript学习笔记
一.Javascript概述(知道) a.一种基于对象和事件驱动的脚本语言 b.作用: 给页面添加动态效果 c.历史: 原名叫做livescript.W3c组织开发的标准叫ECMAs ...
- 浅谈Javascript中Promise对象的实现
https://segmentfault.com/a/1190000000684654 What? Promise是CommonJS的规范之一,拥有resolve.reject.done.fail.t ...
- JavaScript中NODE操作学习总结
Node: 1.在 HTML DOM (文档对象模型)中,每个部分都是节点: 文档本身是文档节点 所有 HTML 元素是元素节点 所有 HTML 属性是属性节点 HTML ...
- Javascript中Object常用方法学习
1.Object.assign 函数(对象)(JavaScript) 将来自一个或多个源对象中的值复制到一个目标对象.语法: Object.assign(target, ...sources ); 此 ...
- Javascript中Promise的简单使用
// 函数功能:1秒以后创建一个10以内的随机整数,并判断这个数是否为偶数:如果是偶数则做一件事情,如果是奇数则做另一件事情 function doSomthing() { var promise = ...
- JavaScript中Promise 使用、原理以及实现过程
1.什么是 Promise promise 是目前 JS 异步编程的主流解决方案,遵循 Promises/A+ 方案. 2.Promise 原理简析 (1)promise 本身相当于一个状态机,拥有三 ...
- javascript 中 Promise的使用
有点经验的js前端都知道 ajax异步函数里面的结果不会立即返回,如果你想在一个异步函数得到某个结果后去执行一个语句怎么做? if ( 异步函数 ) { 语句 } 可能很多人都踩过这样坑,这个时候 ...
随机推荐
- SAP模块常用增强总结{转载}
MM模块: 采购订单增强: BADI :ME_GUI_PO_CUST ME_PROCESS_PO_CUST 物料凭证增强: BADI:MB_DOCUMENT_BADI USER-EXIT:MBCF00 ...
- position 定位
position属性是指本体相对于上级的定位,position又分绝对定位和相对定位.他的默认值是static,意味着元素没有被定位,出现在文档流中应该出现的位置.如果用position来布局页面,父 ...
- nodejs 框架安装生成app
下载nodejs解压到opt目录$ cd /usr/local/bin$ sudo ln -s /opt/node-v5.1.0-linux-x64/bin/node$ sudo ln -s /opt ...
- RHCE 系列(二):如何进行包过滤、网络地址转换和设置内核运行时参数
正如第一部分(“设置静态网络路由”)提到的,在这篇文章(RHCE 系列第二部分),我们首先介绍红帽企业版 Linux 7(RHEL)中包过滤和网络地址转换(NAT)的原理,然后再介绍在某些条件发生变化 ...
- Linux在目录中查找某个函数
1,在某个路径下查文件. 在/etc下查找“*.log”的文件 find /etc -name “*.log” 2,扩展,列出某个路径下所有文件,包括子目录. find /etc -name “*” ...
- CSS强制中英文换行与不换行
1. word-break:break-all; 只对英文起作用,以字母作为换行依据 2. word-wrap:break-word; 只对英文起作用,以单词作为换行依据 3. white-space ...
- sqlserver数据库学习(-)数据类型
ecimal 数据类型最多可存储 38 个数字,所有数字都能够放到小数点的右边.decimal 数据类型存储了一个准确(精确)的数字表达法:不存储值的近似值. 定义 decimal 的列.变量和参数的 ...
- Sublime Text 3安装与使用
本文是Sublime Text 全程指引 by Lucida (http://www.cnblogs.com/figure9/p/sublime-text-complete-guide.html)的笔 ...
- H5实现俄罗斯方块(三)
最高分的面板: (function (window) { 'use strict'; function HighScore() { this.canvas = new Canvas('highscor ...
- vmware12用 unlocker206能不能解锁 OS X系统
先下载UnLocker2061.zip 2. 选择虚拟机右键--> 属性 3.将下载的unlocker2061解压后文件放入VMware安装目录下 选择win-install.cmd文件 右 ...