我想了解 promises,但我遇到了问题。
function commentFirst() {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('first');
resolve('value');
}, 1500);
});
}
commentFirst().then((val) => {
setTimeout(function() {
console.log(val + ' 1')
}, 2000);
return val;
}).then((val1) => console.log(val1 + ' 2'));
我想要这样的输出:
first
value 1
value 2
我做错了什么?
最佳答案
在第二个 .then
中,您正在执行一个没有任何 promise 的 setTimeout,因此它会立即执行并返回,甚至在 setTimeout 执行之前。我添加了一个 promise ,这样当 setTimeout 执行时,它将解决 promise ,然后继续执行您需要的命令。
function commentFirst() {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('first');
resolve("value");
}, 1500);
});
}
commentFirst()
.then((val) => {
return new Promise(resolve => {
setTimeout(function() {
console.log(val + ' 1')
resolve(val);
}, 2000);
})
})
.then((val1) => console.log(val1 + ' 2'));
关于javascript - ECMAScript 6 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32261282/