如何等待异步调用的响应

时间:2018-09-10 10:12:22

标签: javascript node.js request

这可能是一个非常基本的问题,但在线解决方案都无济于事。 我正在尝试拨打电话

/* eslint-disable no-undefined */
let req = require('request');
function mutate(body) {
    return body;
}
function post(request) {
    let config = request.server.app.config;

    let payload = request.payload;
    let imageFile = '';
    let options = {
        method: 'POST',
        url: `${config.get('api.baseUrl')}/imageUpload`,
        headers: {
            'Accept': '*/*',
            'cache-control': 'no-cache'

        },
        formData:
        {
            file: imagefile

        }
    };

    return req(options, (error, response, body) => {
        if (error) {
            throw new Error(error);
        }
        request.log(response);
        return body;
    });
}
module.exports = {
    post
};

正在打印的响应是正确的。 在实际调用完成之前返回该值。 返回实际响应的正确方法是什么

1 个答案:

答案 0 :(得分:0)

为避免问题,您可以使用

1)承诺

2)异步并等待

请尝试如下更改功能。

async function post (request) {
 let config = request.server.app.config;

let payload = request.payload;
let imageFile = '';
let options = {
    method: 'POST',
    url: `${config.get('api.baseUrl')}/imageUpload`,
    headers: {
        'Accept': '*/*',
        'cache-control': 'no-cache'

    },
    formData:
    {
        file: imagefile

    }
};

return await req(options, (error, response, body) => {
    if (error) {
        throw new Error(error);
    }
    request.log(response);
    return body;
});
}

您可以在此处查看有关异步/等待和承诺的更多信息。

async-await usage

promises usage