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 ( 异步函数 ) { 语句 } 可能很多人都踩过这样坑,这个时候 ... 
随机推荐
- Eclipse中@author的修改
			什么东西都可能会被忘掉,我这种记性不好的就更容易忘了.换了电脑后eclipse中的@author变了,于是找了下修改@author的方法:1. 在eclipse.ini中添加-vmargs-Duser ... 
- Nginx 支持 CI 框架的配置并禁止使用 ip 访问
			#CIserver { listen 80; server_name www.ci.com; index index.php index ... 
- 读javascript高级程序设计04-canvas
			一.基本用法 1.要使用canvas元素,需要先给定其width和height来设置绘图区域的大小.canvas中间的文本会在浏览器不支持canvas的情况下显示出来. <canvas widt ... 
- linux 安装 ftp
			1 安装 vsftpd 查看是否已经安装 vsftpd rpm -qa | grep vsftpd 如果没有 则安装 安装命令如下 yum -y install vsftpd 设置开机启动 chkc ... 
- SQL SERVER CURSOR游标的使用(转载)
			一:认识游标 游标(Cursor)它使用户可逐行访问由SQL Server返回的结果集. 使用游标(cursor)的一个主要的原因就是把集合操作转换成单个记录处理方式. 用SQL语言从数据库中检索数据 ... 
- 新版Chrome自动禁用第三方插件的解决办法[转]
			原文地址:http://www.douban.com/note/375734834/?type=like Chrome的新策略里面禁用了除chrome web store下载的所有第三方扩展,这个很烦 ... 
- iOS开发UI篇—推荐两个好用的Xcode插件(提供下载链接)
			iOS开发UI篇—推荐两个好用的Xcode插件(提供下载链接) 这里推荐两款好用的Xcode插件,并提供下载链接. 一.插件和使用如下: 1.两款插件 对项目中图片提供自动提示功能的插件:KSImag ... 
- bzoj 3131: [Sdoi2013]淘金
			#include<cstdio> #include<iostream> #include<queue> #include<algorithm> #def ... 
- PHP 每天的总结(1)
			今天写博客的心情比以往还要糟糕,因为........................(完结). 1.获取某输入框的值,有两中获取方式,GET和POST .前者 没有为顾客的账户安全着想.而后者返之: ... 
- java 异常
			异常简介 java中有Error和Exception Error:是程序无法处理的错误,表示运行应用程序中较严重问题.大多数错误与代码编写者执行操作无关,而表示运行时JVM出现的问题. Excepti ... 
