有人可以向我解釋為什么下面的函式在retrieve_s3_file() 完成之前回傳嗎?
客戶端沒有收到來自下面的 response.send 的資料。從retrieve_s3_file() 回傳的資料是正確的(基于控制臺輸出),但是沒有資料的回應首先被發送回客戶端。
app.post("/getJobStatus", function(request, response){
var guid = request.body.job_id;
var to_do_list = [];
var data_list = [];
var completed_list = [];
axios.get(job_queue_url "/list?guid=" guid)
.then(function (res){
console.log("Response from API gateway : ");
console.log(res.data);
files = res.data;
for (let i = 0; i < files.length; i )
{
if (files[i] in completed_list) {continue}
else {
to_do_list.push(files[i]);
completed_list.push(files[i]);
}
}
response.send(retrieve_s3_file(to_do_list, guid));
})
.catch(function (error){
console.log(error);
});
uj5u.com熱心網友回復:
如果retrieve_s3_files是異步的,則需要等待 Promise 解決,然后才能使用該值。您可以將最后一行更改為以下內容:
retrieve_s3_file(to_do_list, guid).then(val => {
response.send(val);
}).catch(error => {
console.log(error)
});
我添加了該.catch方法,以便您可以優雅地處理與 s3 互動時發生的任何錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/461595.html
標籤:javascript 节点.js 异步
上一篇:Javascript變數不會隨著HTML內容的變化而改變值
下一篇:在React中編輯多個輸入欄位
