Promise的原理和作用域的用法和实例
Promise是一种异步编程的解决方案,它可以让我们更方便地处理异步操作,避免了回调地狱的问题。Promise的核心思想是将异步操作封装成一个对象,通过链式调用的方式来处理异步操作的结果。
Promise状态
状态有三种分别是 pending(进行中) fulfilled(已成功) rejected(已失败)
pending:初始状态,既不代表成功也不代表失败,无论是失败还是成功都会执行
let b=0functiongetCount(){
returnnewPromise((resolve, reject) =>{
setTimeout(()=>{
b=300resolve(b)
},1000)
})
}
console.log(getCount());
let a=0functiongetNumber(){
returnnewPromise((resolve, reject) =>{
setTimeout(()=>{
a=30reject(a)
})
})
}
console.log(getNumber());
Promise方法
静态方法:solve() ject()
1.solve()函数被执行时, 会将promise的状态从 pending 改成fulfilled成功
2.ject()函数被执行时, 会将promise的状态从pending 改成rejected失败
new Promisepending((resolve, reject) =>{
resolve() reject()
})
3.Promise.all()函数执行时,返回所有的promise
Promise.all([getCount(),getNumber()]).then(res=>{
console.log(res);
}).catch(err=>{
console.log(err);
})
4.Promise.race()函数执行时,返回执行最快的Promise
Promise.race([getCount(),getNumber()]).then(res=>{
console.log(res)
}).catch(err=>{
console.log(err)
})
作用域
作用域分为全局作用域,函数作用域(局部作用域) 自动全局作用域
全局作用域
1直接写在 script 标签中的 JavaScript 代码都是全局作用域。当页面打开运行时全局作用域就会自动创建,而当页面关闭时就会销毁。在全局作用域中有一个全局的 window 对象可以使用,而所有全局作用域对象都会作为 window 对象的属性来使用。
console.log(window);
var a = 10;
console.log(window.a); functionaa() {
console.log('aa')
}
window.aa();
var aaa = {
name: '张三'
}
console.log(window.aaa.name);
函数作用域
作用于函数的代码环境是局部范围。因为和函数有关,所以也叫函数作用域。局部作用域(函数作用域)只在函数被调用时创建,函数执行后自动销毁。同时,每次调用一个函数,都会创建一个新的函数作用域,它们是相互独立的。在函数作用域中可以访问全局作用域,但在全局作用域中不能访问函数作用域。当一个变量在函数作用域中使用时,它会先在自己的作用域中查,如果到就直接使用,如果不到就在上级作用域中查,直到到全局作用域。如果没有到,将会报告一个错误。
var age = 18;
functionfn() {
var age = 20;
console.log(age); console.log(this.age); console.log(window.age);
}
window.fn();
自动全局作用域
如果没有声名变量赋值,这变量会自动成为全局变量
function fn() {
age = 19;
console.log(age);
}
fn();
console.log(window);
console.log(age);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论