Discuss
/
JavaScript
/
【浏览器】Promice总结
【浏览器】Promice总结
Topic source//前缀数字代表标签级别,没展开一层,级别加一
< 1 Promise {<pending>}
2 __proto__: Promise //原型对象为Promise
2 [[PromiseStatus]]: "pending"
2 [[PromiseValue]]: undefined
//展开
> new Promise(function () {});
< 1 Promise {<pending>}
2 __proto__: Promise //下属方法属性
3 catch: ƒ catch()
3 constructor: ƒ Promise()
3 finally: ƒ finally()
3 then: ƒ then()
3 Symbol(Symbol.toStringTag): "Promise"
3 __proto__: Object[[PromiseStatus]]: "pending"
2 [[PromiseValue]]: undefined
原型链 Promise -> Object -> null
异步代码最早是回调函数形式(由于JavaScript是单线程,对于一些“昂贵”的操作(高耗时),如定时,ajax,事件,往往以会回调函数形式实行异步操作提高cpu利用率)
promise专为异步代码解决复杂度 ——分离了执行代码(then)和结果处理函数(catch)
ES7引入async和await进一步解决异步代码的复杂性
//异步——回调函数(回调函数不一定异步)
function callback(){
console.log("this is callback()");
console.log(callback()-2);
}
settime(1000,callback);
console("before callback()");
//promise
new Promise(function(){
console.log("this is callback()");
}).then(function(){
console.log("callback()-2");
})
//async await
async function(){
await settime(1000);
await console.log("this is callback()");
await console.log(callback()-2);
}
console.log("before callback()");
上面的回调函数例子举的不太行
上面的是高耗时导致该操作挂起,执行下一操作
回调函数一般用于事件中 onclick(function) 或者ajax这样昂贵的操作(setTime()可以模拟这样的操作)
- 1
用户7303966659
JavaScript是单线程执行的,异步的
Promice作用: