[英]Return promise in node.js
我嘗試從 API 返回 node.js 中的數據,但我遇到了問題,因為我需要一個異步函數,我無法確定正確使用承諾,我已經嘗試了一切,但我做不到' t 把結果放在 return 里,只放在 console.log 里,有人幫幫我嗎?
const express = require('express')
const MFA = require('mangadex-full-api')
module.exports = {
async indexManga(req, res) {
const mangalist = MFA.login('DarksGol', 'R@ul1605', './md_cache/').then(async () => {
manga = []
await MFA.Manga.search('Kiss').then(results => {
results.forEach((elem, i) => {
let obj = {}
obj.status = elem.status
obj.title = elem.title
manga.push(obj)
})
}).catch(console.error)
return manga
}).catch(console.error)
console.log(await mangalist)
return mangalist
}
}
沒有發生錯誤,只有無限加載請求
我不明白為什么這會導致“請求時無限加載”,但是您可以將代碼大大簡化為
const express = require('express');
const MFA = require('mangadex-full-api');
module.exports = {
async indexManga(req, res) {
await MFA.login('DarksGol', 'R@ul1605', './md_cache/')
const mangaList = [];
const results = await MFA.Manga.search('Kiss');
results.forEach(elem => {
mangaList.push({
status: elem.status,
title: elem.title,
});
});
return mangalist;
},
};
看起來indexManga
是一個端點。 每個端點函數都必須通過發送響應( res.send()、res.json()、res.end() 等)來結束請求-響應循環。 如果indexManga
是一個端點,則解決方案是:
...
//return mangalist
res.send(mangalist)
或者
//return mangalist
res.json({ status: "success", message: "logged in successfully" })
如果是中間件:
async indexManga(req, res, next) {
...
//return mangalist
return next()
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.