Bootstrap

JS 异步操作 Promise对象学习笔记

在学习JS的时候没看es6的部分导致自己写和看别的代码时很吃力,今天遇到了异步的问题,在听了QQ群里的老哥指导和看了菜鸟教程和一位博主的博客后有了点理解趁热写下来,纯属个人理解要是有什么理解不对的地方还请大佬给指正一下。
1、JavaScript 异步编程
与之前学过的语言不太相同的是,JS含有异步的概念。浏览器在执行JS代码时有且只有一条主线程,按行顺序执行代码,但是主线程可以发射一个子线程出来辅助做一些其他事情。有的时候我们处理一件事情的时候是有步骤的,步骤二只能在步骤一执行完了才能继续。要是有一个大文件要上传或下载,主线程就会一直卡在上传或下载那个地方,这样页面就因为主线程被占用失去响应。因为主线程可以发射一个子线程,所以可以把这个文件上传或下载的活交给子线程来干,这样页面不会失去响应。
但是子线程有一个局限:一旦发射了以后就会与主线程失去同步,我们无法确定它的结束,如果结束之后需要处理一些事情,比如处理来自服务器的信息,我们是无法将它合并到主线程中去的。
2、Promise对象
Promise是ES6新特性,构造一个Promise对象

new Promisefunction(resolve,reject){
   
//这里写要做的事情
}

2.1认识Promise对象
它有三种状态
未决定的:pending
成功:resolve、fulfilled
失败:rejected
它也有两个参数,且这两个参数都是函数调用resolve表示一切正常,而且可以向后续的异步操作里传递参数,但是它只在第一层异步可以用就是

function(resolve,reject){
   
//只在这里可以用
}

reject函数表示出现异常时调用

new Promise(function (resolve, reject) {
   
    var a = 0;
    var b = 1;
    if (b == 0) reject("Divide zero");
    else resolve(a / b);
}
;