我对 JavaScript 中的 Promise 和异步编程很陌生,我正在尝试对 Node.js 中的 Google map Places API 进行多个 API 调用,然后在收到所有数据后将数据发送到客户端。但是,我收到某种语法错误,指出参数列表后缺少 ) 。抱歉,如果我问了一个愚蠢的问题,我似乎无法弄清楚这个问题。谢谢您的帮助!
const fetch = require('node-fetch');
module.exports = (app) => {
app.post('/search-champ', (req, res) => {
console.log(req);
let lat = req.body.param.lat; //before: req.query.lat it's wrong
let long = req.body.param.long;
console.log(lat);
const apiId = 'AIzaSyAeEPop5mofzDJhytOEMtxXaGWFqGB4Q3M';
const urls = [
'https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=' + lat + ',' + long + '&rankby=distance&type=department_store&key=AIzaSyAeEPop5mofzDJhytOEMtxXaGWFqGB4Q3M',
'https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=' + lat + ',' + long + '&rankby=distance&type=food&key=AIzaSyAeEPop5mofzDJhytOEMtxXaGWFqGB4Q3M'
];
Promise.all(urls.map(url =>
fetch(url)
.then(checkStatus)
.then(data => {
console.log(data)
res.send({
data
});
})
}).catch(err => {
res.redirect('/error');
});
function checkStatus(response) {
if (response.ok) {
return Promise.resolve(response);
} else {
return Promise.reject(new Error(response.statusText));
}
}
})
}
最佳答案
在 javascript 中获取返回一个响应 promise 对象,您必须对其调用 json 方法。将您的 checkStatus
方法更改为此。
function checkStatus(response) {
if (response.ok) {
return Promise.resolve(response.json());
} else {
return Promise.reject(new Error(response.statusText));
}
}
关于javascript - 如何进行多个 api 调用 Node.js Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52954273/