node.js - 使用 promise .then 返回 promise 并包装之前的响应
问题描述
据我了解,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']
解决方案
在console.log(res)
你想打印函数sleep.then(...)
内部返回的值main()
。但是,该函数没有返回该值。实际上,它没有返回任何东西res
,undefined
.
在里面main()
,你应该返回sleep.then(...)
。这样,res
将是该承诺返回的值。
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);
})
推荐阅读
- node.js - 如何使用 Node js 在 MongoDB 服务中创建树模式并表达
- python - Pandas:如何将 Dataframe 的值映射到另一个 Dataframe?
- javascript - 考虑旋转,使用 JS 调整多个对象的大小
- python - 基于过滤器和多列索引的新列?
- python - 按特定列拖动排序表python selenium
- python - 从循环更新对象数组
- javascript - removeEventListener 未删除
- karate - 使用 Multipart 字段在空手道中上传 XML 文件并获取 415 不受支持的媒体类型
- java - 如何在 Elasticsearch 6.8.x 的索引中查找无效文档,同时获取“type”:“number_format_exception”,“reason”:“对于输入字符串:\”\u00000\”
- javascript - 更新我得到的所有依赖项:元素类型无效:需要字符串或类/函数(用于复合组件)但得到:未定义