javascript - promise 使用的疑问
高洛峰
高洛峰 2017-05-19 10:17:46
[JavaScript讨论组]
function test() {
    return new Promise((resolve, reject)=>{
        resolve(123);
    });
}
test().then((a)=>{
    console.log(a);
}).then(function (b) {
    console.log(b);//这行代码被执行了
});

then的第一个参数方法应该是promise在resolve的情况下执行,可console.log(b)居然被执行了,这是为啥

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(2)
天蓬老师

不请自来怒答一记!

在 Promise 中,.then( func ) 会返回一个新的 Promise 实例,这个实例的结果,是把函数体 func 的结果通过执行 Promise.resolve() 得到的。所以在你的问题里,console.log(a) 没有返回值,相当于 Promise.resolve(null) 得到一个状态为 resolved 的 Promise 实例,所以就会继续执行下一步了。

关于 Promise,推荐你看我的教程:Promise 的 N 种用法 里面有非常详细的讲解,基本上能回答关于 Promise 的所有问题。

为情所困

.then(参数1,参数2) 参数1是成功的回调函数(resolve()),参数2是失败的回调函数(reject()),由于你在这里的写法,第二个后面的.then(第一个函数) ,都会被执行,并且打印出b的值为undefined,大概就是这样!!

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号