2 回答
TA贡献1865条经验 获得超7个赞
你正在混合两者。这是异步/等待
exports.getBlog = async (event) => {
try {
var res = await getBlogPost(event);
var data = res.data;
console.log("worked", data);
var response = {
statusCode: 200,
body: JSON.stringify(data)
};
return response;
} catch(error) {
console.log("didn't work");
var response = {
statusCode: 400,
body: JSON.stringify(error.toString())
};
return response;
}
}
并且没有
exports.getBlog = event => {
return getBlogPost(event).then((data) => {
console.log("worked", data);
var response = {
statusCode: 200,
body: JSON.stringify(data)
};
return response;
})
.catch((error) => {
console.log("didn't work");
var response = {
statusCode: 400,
body: JSON.stringify(error.toString())
};
return response;
});
}
好读:https ://hackernoon.com/6-reasons-why-javascripts-async-await-blows-promises-away-tutorial-c7ec10518dd9
编辑:添加MDN关于 async/await 的文章以及如何用它重写 promise 代码
TA贡献2065条经验 获得超13个赞
编写 promise 有两种主要方法,首先使用 resolve 和 reject 函数,其次使用 .then 和 .catch 函数。
第一个案例示例:
let promise = new Promise(function(resolve, reject) {
setTimeout(() => reject(new Error("Whoops!")), 1000);
});
// reject runs the second function in .then
promise.then(
result => alert(result), // doesn't run
error => alert(error) // shows "Error: Whoops!" after 1 second
);
第二种情况示例:
如果我们只对成功完成感兴趣,那么我们可以只为 .then 提供一个函数参数:
let promise = new Promise(resolve => {
setTimeout(() => resolve("done!"), 1000);
});
promise.then(alert); // shows "done!" after 1 second
如果我们只对错误感兴趣,那么我们可以使用 null 作为第一个参数:.then(null, errorHandlingFunction)。或者我们可以使用 .catch(errorHandlingFunction),完全一样:
let promise = new Promise((resolve, reject) => {
setTimeout(() => reject(new Error("Whoops!")), 1000);
});
// .catch(f) is the same as promise.then(null, f)
promise.catch(alert); // shows "Error: Whoops!" after 1 second
添加回答
举报