首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用promise .then return promise和包装上一个响应

使用promise .then return promise和包装上一个响应
EN

Stack Overflow用户
提问于 2021-09-01 18:08:18
回答 1查看 36关注 0票数 0

据我所知,promise.then返回了一个新的承诺。而是如何使用值返回此承诺。下面是我的示例代码

代码语言:javascript
代码运行次数:0
运行
复制
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);
})

日志输出

代码语言:javascript
代码运行次数:0
运行
复制
a
b
undefined

期望的

代码语言:javascript
代码运行次数:0
运行
复制
a
b
['at', 'b']
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-01 18:33:00

console.log(res)中,您希望在main()函数中打印sleep.then(...)返回的值。但是,该函数不会返回该值。实际上,它没有返回任何内容,所以resundefined

main()中,您应该返回sleep.then(...)。这样,res将是该promise返回的值。

代码语言:javascript
代码运行次数:0
运行
复制
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);
})

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69018709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档