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 ( 异步函数 ) { 语句 } 可能很多人都踩过这样坑,这个时候 ...
随机推荐
- iOS基础篇(十五)——UIScrollView的基本用法
滚动视图(UIScrollView)通常用于显示内容尺寸大于屏幕尺寸的视图. 一.基本属性 1.CGSize contentSize :设置UIScrollView的滚动范围 2.CGPoint co ...
- IE6 一些兼容性问题及处理方法
1.IE6怪异解析之padding与border算入宽高 原因:未加文档声明造成非盒模型解析 解决方法:加入文档声明<!doctype html> 2.IE6在块元素.左右浮动.设定mar ...
- SQL Server 2008中查看锁信息
;with tran_locks as(select resource_type,db_name(resource_database_id) as db_name,resource_descripti ...
- 动态监控驱动、dll、exe加载
/* windows2003 x86/x64 window7 x86 windows2008 R2 x64测试通过 */ #include <ntddk.h> #include " ...
- Hadoop 2.2.0 4结点集群安装 非HA
总体介绍 虚拟机4台,分布在1个物理机上,配置基于hadoop的集群中包括4个节点: 1个 Master, 3个 Salve,i p分布为: 10.10.96.33 hadoop1 (Master) ...
- 定时调度框架Quartz随笔
最近项目中的定时批处理用到了quartz定时任务,在此记录下quartz的配置吧,一个小demo仅供参考,也方便自己今后复习! 下面直接来步骤吧! 一.首先,要搭起能让quartz正常运行的环境,至少 ...
- linux命令每日一练习-top free
top看看进程的内存使用情况 free产看内存使用情况 top -n 2 -b > log.txt 将更新两次的结果输入到log.txt cat > log.txt //清空文件并写入 ...
- JavaScript数组方法总结
由于最近都在freecodecamp上刷代码,运用了很多JavaScript数组的方法,因此做了一份关于JavaScript教程的整理,具体内容如下: 一.普通方法 1.join() 将数组元素连接在 ...
- UISegmentedControl的详细使用
当用户输入不仅仅是布尔值时,可使用分段控件(UISegmentedControl).分段控件提供一栏按钮(有时称为按钮栏),但只能激活其中一个按钮.分段控件会导致用户在屏幕上看到的内容发生变化.它们常 ...
- Redis持久化-数据丢失及解决(转载)
本文转载自 Redis持久化-数据丢失及解决 感谢原作者 Redis的数据回写机制 Redis的数据回写机制分同步和异步两种, 同步回写即SAVE命令,主进程直接向磁盘回写数据.在数据 ...