面试了许多求职者,很多求职者只知其然,而不知所以然,写此文章为广大前端小伙伴指引迷津。纯干货!纯干货!纯干货!
目录
promise
什么是promise?
答:是异步编程的一种解决方案,比传统的异步解决方案更合理、更强大。
promise的作用?
答:解决地狱回调。
promise的实现原理?
答:把回调封装在了内部,使用上一直通过 then 方法的链式调用,使得多层的回调嵌套看起来变成了同一层的,书写上以及理解上会更直观和简洁一些。
promise的使用场景?
答:异步调用、配合async/await变成同步任务。promise.all:等所有的执行完返回结果。promise.race:哪个先执行完,就返回它的结果,其它结果抛弃。
promise的弊端?
答:无法取消Promise,一旦新建它就会立即执行,无法中途取消;如果不设置回调函数,promise内部抛出的错误,不会反应到外部;当处于pending状态时,无法得知目前进展到哪一个阶段。
promise的笔试题?
const first = () => (new Promise((resolve, reject) => {
console.log(3);
let p = new Promise((resolve, reject) => {
console.log(7);
setTimeout(() => {
console.log(5);
resolve(6);
}, 0)
resolve(1);
});
resolve(2);
p.then((arg) => {
console.log(arg);
});
}));
first().then((arg) => {
console.log(arg);
});
console.log(4);
答案:3 7 4 1 2 5
面试大白话
答:首先,Promise是是异步编程的一种解决方案。其主要目的也是为了解决地狱回调。它的原理就是把回调封装在了内部,通过 then 方法的链式调用。我们项目里面一般就是用来对异步调用的一个封装以及配合async/await变成同步一起使用。不过Promise也有弊端,一旦新建它就会立即执行,无法中途取消。