[英]How to wrap an asynchronous function to avoid code duplication?
我试图通过将代码包装在单独的函数中来避免代码重复。 问题是d3.json是异步的,因此有时会返回一个空的info对象。 有没有办法避免代码重复?
function getData(endpoint){
//long stuff
var info = {"succeeded": 1,"datum":[], "message":""};
d3.json(endpoint, function(error, data) {
//long stuff
info.datum = data;
return info;
});
return info;
}
一旦进入异步调用的世界,您将再也无法返回,因此,如果不使包装函数也实现异步,就无法做到这一点。 这样的事情可能会起作用:
function getData(endpoint, callback) {
d3.json(endpoint, function(error, data) {
var info = {
succeeded: 1,
data: data,
message: ""
};
callback(info);
});
};
您的回调函数将接受一个参数,该参数将成为您的“ info”对象。
请注意,我在d3回调函数中将信息对象的创建移到了更靠近它使用的位置,但这只是样式首选项。 当然,您可以根据需要将其放回户外。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.