如何从Promise访问数据

时间:2018-08-08 16:03:49

标签: javascript node.js promise

在此处输入代码我的promise语句在返回未定义的结果。我怎样才能从诺言访问数据并使用它?这是我的代码。这将返回并显示实时时间表,但我只是无法访问数据并使用它们。请帮助我访问数据。谢谢!

$("#btn").on('click', function () {
   html2canvas($("#maintag"), {
   onrendered: function (canvas) {
        var myCanvas = canvas;
        var initImage = myCanvas.toDataURL("image/png");
        var dnldImage = initImage.replace(/^data:image\/[^;]/, 'data:application/octet-stream');
        $("#btn").attr("download", "test.png").attr("href", dnldImage);
     }
   });
 }).click();

2 个答案:

答案 0 :(得分:0)

info是未定义的,因为您应该在return函数中添加getStopInfo

您应该发挥作用

function getStopInfo(StopId){
    return mta.schedule(StopId).then(function (result) {
        console.dir(result, {depth:null, colors:true});
        return result;
    });
}

答案 1 :(得分:0)

由于我不知道您使用的确切api以及mta.schedule如何准确返回promise数据...在此示例中我将其存根了...基本上,我认为您可能会考虑使用异步/ await函数设置...在这里查看此想法...

let Mta = require('mta-gtfs');
let mta = new Mta({
  key: 'MY-MTA-API-KEY-HERE',
});

async function getStopInfo(StopId, callback){
    try {
        const info = mta.schedule(StopId)
        callback(info)
    } catch(error){
        console.log(error)
    }
}

getStopInfo(627, info => {
  console.log('yep info is outside now', info)
})