javascript - 如何进行多个 api 调用 Node.js Promise

标签 javascript node.js

我对 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/

相关文章:

javascript - stub 模块功能

javascript - 如何将琐事测验的答案随机放置在按钮槽中

javascript - 功能在 Internet Explorer 11 中不起作用

node.js - 如何将 nodemon/grunt 与 .env 文件一起使用?

node.js - 如何在 npm 的 package.json 中指定本地存储库的存储库 url?

node.js - babel-preset-env 无法与 webpack-dev-server v2.2.0-rc.0 一起使用

javascript - jQuery向下滚动弹出窗口页面而不是主html页面

javascript - 在 JavaScript 中遍历数组时的奇怪行为

javascript - 从 Javascript 中的调用函数返回

javascript - 在数组(或对象)上迭代异步的最聪明/最干净的方法是什么?