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條經驗 獲得超14個贊
編寫 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
添加回答
舉報