Как вернуть qrcode в dataurl кодировку для ответа json - PullRequest
0 голосов
/ 04 сентября 2018

Я написал функцию nodejs для кодирования qrcode и хочу вернуть результат обратно в функцию вызывающего, чтобы создать ответ json. Но я не знаю, почему он не может вернуть ответ. Что не так с моим кодом. Можете ли вы помочь мне, пожалуйста.

gen_qrcode : function () {
    var QRCode = require('qrcode');
    var qr_url = "https://www.google.com";
    var qr_data = QRCode.toDataURL(qr_url, { errorCorrectionLevel: 'M' }, function (err, url) {
        console.log(url);
    });
    return qr_data;
}

ответ json, который я хочу создать

{
"status": 1,
"description": "Success",
"qr_data": "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"
}

1 Ответ

0 голосов
/ 04 сентября 2018

QRCode.toDataURL использует функцию обратного вызова (которая после асинхронного получения URL-адреса вызывает функцию обратного вызова с параметрами, поэтому вы не можете напрямую ее вернуть).

Однако, если вы не укажете обратный вызов, он возвращает Обещание. Вы можете вернуть Обещание и использовать метод then в Обещании, чтобы получить значение.

gen_qrcode : function() {
    var QRCode = require('qrcode');
    var qr_url = "https://www.google.com";
    return QRCode.toDataURL(qr_url, { errorCorrectionLevel: 'M' });
}

//other function
object_name.gen_qrcode().then((url) => {
    let json_object = JSON.stringify({
       status: 1,
       description: 'Success',
       qr_data: url 
    })
    console.log(json_object); //do something with json_object
})

В качестве альтернативы вы можете использовать Async / Await ( поддержка браузера ) с инструкциями здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...