promise用法:7个方法
前置:
js语言的运行环境为单线程,一次只能完成一个任务,呈流水线式;如果有多个任务就必须排队,前面任务完成后,再继续执行下面的任务。和java等多线程编程语言不同。
同步和异步:
同步可以理解为同一流水线上的正常由上而下的顺序操作;
异步可以理解为改变程序的执行顺序的操作;
js中的异步1.setTimeout和setInterval(满足延时事件);最基础的是定时函数,2.事件处理函数(特定事件被触发时)3.ajax回调函数(服务器返回数据时,xhr.readyStart发生变化时)
4.文件读写(nodejs)5.网络通信(nodejs)
宏任务:进入事件队列的任务称为宏任务
微任务:不进入事件队列,但是内存中也会有一个微任务队列,微任务的执行时机优先于宏任务
进入到队列中的任务何时出发?
主线程必须是空闲的;必须满足自身的出发条件
同步执行的任务是主线程,setTimeout函数为异步任务,不进入主线程,会进入"任务队列"。程序会先执行同步里的内容,执行完成后,“任务队列”快开始通知主线程,请求执行任务,然后才会进入主线程执行。
异步任务必须指定回调函数,当主线程开始执行异步任务,就是执行相应的回调函数。例如ajax的success,complete,error也都指定了各自的回调函数,这些函数就会加入任务队列中,等待执行。
第一:读文件操作
第二:解决回调地狱
第三:返回具体的数据
第四:
promise有三个状态:
1、pending[待定]初始状态
2、fulfilled[实现]操作成功
3、rejected[被否决]操作失败
当promise状态发生改变,就会触发then()里的响应函数处理后续步骤;
promise状态一经改变,不会再变。
Promise对象的状态改变,只有两种可能:
从pending变为fulfilled
从pending变为rejected。
这两种情况只要发生,状态就凝固了,不会再变了。