据我所知,promise.then
返回了一个新的承诺。而是如何使用值返回此承诺。下面是我的示例代码
function sleep(input, timeout) {
return new Promise(resolve => {
setTimeout(resolve(input), timeout)});
}
async function main() {
sleep(['a','b'],1000)
.then(([first, second]) => {
console.log(first)
console.log(second);
return [first+'t', second];
});
}
main()
.then(res => {
console.log(res);
})
日志输出
a
b
undefined
期望的
a
b
['at', 'b']
发布于 2021-09-01 10:33:00
在console.log(res)
中,您希望在main()
函数中打印sleep.then(...)
返回的值。但是,该函数不会返回该值。实际上,它没有返回任何内容,所以res
是undefined
。
在main()
中,您应该返回sleep.then(...)
。这样,res
将是该promise返回的值。
function sleep(input, timeout) {
return new Promise(resolve => {
setTimeout(resolve(input), timeout)});
}
async function main() {
return sleep(['a','b'],1000)
.then(([first, second]) => {
console.log(first)
console.log(second);
return [first+'t', second];
});
}
main()
.then(res => {
console.log(res);
})
https://stackoverflow.com/questions/69018709
复制