我是JS新手。 我刚去MDN网站 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then 玩给定的例子。 我将示例更改为
var promise1 = new Promise(function(resolve, reject) {
resolve('Success!');
});
promise1
.then(value => console.log(value))
.then(console.log('1'))
.then(console.log('2'))
.then(console.log('3'))
.then(console.log('4'))
.then(console.log('5'));
我希望结果是成功!然后是1,一直到5。 但是,结果是1到5,然后是成功! 对我来说似乎有点奇怪。 我已经很好地链接了它,但没有“分支”它。非常感谢
答案 0 :(得分:2)
您将console.log
表达式的结果提供给then
,而不是将在执行时记录数字的函数:
var promise1 = new Promise(function(resolve, reject) {
resolve('Success!');
});
promise1
.then(value => console.log(value))
.then(() => console.log('1'))
.then(() => console.log('2'))
.then(() => console.log('3'))
.then(() => console.log('4'))
.then(() => console.log('5'));
答案 1 :(得分:-4)
那是因为您使用了then(console.log(...))
,它将执行console.log
并将结果用作传递给then
的参数
是这样的:
var promise1 = new Promise(function(resolve, reject) {
resolve('Success!');
});
var par1 = console.log('1'),
par2 = console.log('2'),
par3 = console.log('3'),
par4 = console.log('4'),
par5 = console.log('5');
promise1
.then(value => console.log(value))
.then(par1)
.then(par2)
.then(par3)
.then(par4)
.then(par5);