0

如何在回调“onRequest”中发送 npm 模块“blockchain.info”返回的 JSON 对象“数据”。我想在浏览器中写入这些数据。

var http = require("http");
var blockchain = require('blockchain.info');
var blockexplorer = blockchain.blockexplorer;

var txAdress = 'b4b69abc03e4a801201e57ca57891002e5e756e85dde77a17deff0b107185a78';

blockexplorer.getTx(txAdress, function (err, data) {
   if (err) return console.error(err);
    console.log(data.size);  // works fine
});

var server = http.createServer(onRequest).listen(8888);

function onRequest(request, response) {
   response.writeHead(200, {"Content-Type": "text/html"});
   response.write('<h3>List of transactions</h3>');
   //response.write('<p>' + data.size + '</p>');  // data undefined!
   response.end();
}
4

1 回答 1

0

data范围内不存在onRequest了解变量范围

getTx也似乎是一个异步函数,你不能简单地从回调中“返回”它(如果你想尝试的话)。阅读这个问题以了解这一点。

一个简单的解决方案是在请求事件处理程序中进行调用:

function onRequest(request, response) {

    blockexplorer.getTx(txAdress, function (err, data) {
       if (err) return console.error(err);
       response.writeHead(200, {"Content-Type": "text/html"});
       response.write('<h3>List of transactions</h3>');
       response.write('<p>' + data.size + '</p>');
       response.end();
    });

}

当然,您还必须处理错误情况,并且可能希望缓存来自getTx.

于 2015-09-19T20:28:24.427 回答