节点js,函数返回未定义

时间:2020-02-04 18:47:18

标签: javascript node.js request

所以我有一个函数(getBagId),我想返回bag id,由于异步特性,我知道它不返回它,但是我将如何修复它,以便它返回bagId,这是代码< / p>

const getBagId = () => {
    request.get('https://www.off---white.com/en-us/api/users/me', options, (err, res, data) => {
        bagId = data.bagId

    })
    return bagId
}

再次,我希望函数返回bagId,因此将值设置为该值,我也想仅使用回调,没有promise或异步等待的方式来执行此操作,谢谢

3 个答案:

答案 0 :(得分:0)

使用request-promise

const getBagId = async () => {

    const response = await rp({ uri : 'https://www.off---white.com/en-us/api/users/me' })

    // Process the `bagId` from the response (JSON / XML / ??? )
    const bagId = // `bagId` from response.

    return bagId
}

答案 1 :(得分:0)

您可以利用承诺:

const getBagId = () => {
    return new Promise((res, rej) => {
        request.get('https://www.off---white.com/en-us/api/users/me', options, (err, res, data) => {
            if(err) return rej(err);
            return res(data.bagId);
        });
    });
}

但是现在您的.getBagId()返回一个Promise,因此您必须在应用程序中对其进行相应处理

答案 2 :(得分:0)

<nav>是一个异步函数,因此request.get需要返回一个Promise或通过使用getById来异步执行。否则,除非有同步执行的async/await方法的某个版本,否则我将无法执行,我对此表示高度怀疑。