V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  facecool3  ›  全部回复第 1 页 / 共 1 页
回复总数  3
大家来做题
const pro1 = new Promise((resolve, reject) => {
reject('reject')
})
pro1.then(data => {
console.log(data);
return '0';
}, err => {
console.log(err);
return 1;
}).catch(err => {
console.log(err);
return 2;
}).then(data => {
console.log(data);
})
我会这样子回答。不知道面试官爱听不爱听
promise 是 es6 推出的一个异步处理的通用模型,
它把一个异步任务分为 2 个阶段,未决阶段和已决阶段
未决阶段中 promise 的状态是 pending ,可以通过 resolve 或 reject 把任务
推向已决阶段,如果是 resolve ,那 promise 的状态就是 fulfiled ,如果是 reject
那 promise 的状态就是 reject ,
推向已决阶段的同时,可以传递参数,用于对 promise 的后续处理。
后续处理用 then 函数,里面传 2 个回调,一个处理 resolve 一个处理了 reject
每个回调都能拿到他们状态改变时传递的对应的参数。then 函数是放到事件队列的微队列中的
then 函数也会返回一个 promise 对象,这个 promise 的状态根据后续处理函数的执行过程来决定。

如果没有对应的后续处理了,那这个 Promise 的状态与数据和上一个保持一致
如果执行中有错误,那就是 rejected 。
如果有对应的后续处理也没有错误,那这个 promise 的状态就是 fulfiled,数据就是处理函数的返回值
2021-11-05 17:04:53 +08:00
回复了 shmichaelli 创建的主题 上海 上海的程序员交流群(技术、求职、生活)
SlFLMTIzNjk4NzQ1
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   989 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 12ms · UTC 21:51 · PVG 05:51 · LAX 13:51 · JFK 16:51
Developed with CodeLauncher
♥ Do have faith in what you're doing.