javascript - 为什么我需要在承诺中解决响应
问题描述
我有如下承诺:
let promise = new Promise((resolve, reject) => {
axios.post("https://httpbin.org/post", params, header)
.then(response => {
resolve(Object.assign({}, response.data));
// resolve("aaaa");
console.log(response);
})
.catch(error => reject(error))
});
为什么我需要用响应数据来解决这个承诺?
如果我替换resolve(Object.assign({}, response.data));
line by会发生什么resolve("aaaa");
?
任何人都可以帮助我吗?谢谢你。
解决方案
值得一提的是axios.post()
已经返回 a Promise
,因此您无需将其包装在另一个承诺中。
这将改为:
let promise = axios.post("https://httpbin.org/post", params, header)
.then(response => {
console.log(response);
return Object.assign({}, response.data);
});
// Later on...
promise.then(data => {
console.log('Request successful:', data);
}, err => {
console.log('Request failed:', err);
});
Promise
仅当您没有链接现有的 Promise 时,才需要构造一个新对象,如下例所示:
function delay(duration) {
return new Promise(resolve => setTimeout(resolve, duration));
}
delay(1000).then(() => {
console.log('this code is delayed by 1s');
});
推荐阅读
- c# - .NET Core Web 应用程序未找到程序集参考
- macros - 在计算器中进行多图像分析的宏加
- npm - NPM 使用传递依赖解决对等依赖
- python - scrapy 自定义输出处理器
- java - 试图编译一个新的 servlet 来做一个休息服务
- c# - Visual Studio 项目系统遇到错误
- java - 关于将文档上传到表单而不将其保存到数据库的最佳方法的建议?
- python - 从 GaussianNB 分类器 python 中获取前 3 个预测类
- android - SQLite 数据库使 Android 应用程序无错误关闭
- sql-server - 无法在带有 ODBC 13 驱动程序的 SQL Server 上使用 VB6 ADO 检索 varchar(max) 字段