gpt4 book ai didi

javascript - 如何在 Meteor 中将数据从服务器传递到客户端

转载 作者:行者123 更新时间:2023-12-02 15:51:25 26 4
gpt4 key购买 nike

我正在学习 Meteor 和 Javascript。我正在使用 npm 包来获取服务器端 url 的元数据。这很好用。但是当将该结果传递回客户端时,我得到了未定义。希望得到一些帮助。

这是我的代码

if (Meteor.isClient) {
Meteor.call('getMetaData', "http://www.bbc.co.uk/news", function (err, data) {
if (err) {
console.log("error", err);
};
console.log("Meta data: " + data); //shows undefined
});
}


if (Meteor.isServer) {
Meteor.startup(function () {
var preview = Meteor.npmRequire('page-previewer');
Meteor.methods({
getMetaData: function (url) {
preview(url, function (err, data) {
if (!err) {
console.log(data); //Works fine
return data;
}
});
}
})
});
}

最佳答案

你需要将预览函数转换为同步函数,这样使用Future,这会让这个函数等待正常的err,数据回调变成同步函数。

var Future = Npm.require('fibers/future'),
preview = Meteor.npmRequire('page-previewer');
Meteor.methods({
getMetaData: function(url) {
var f = new Future();
preview(url, function(err, data) {
if (!err) {
return f.return(data);
}
});
return f.wait();
}
});

现在这个片段应该可以工作了

if (Meteor.isClient) {
Meteor.call('getMetaData', "http://www.bbc.co.uk/news", function (err, data) {
if (err) {
console.log("error", err);
}else{
console.log("Meta data: " + data); //shows undefined
}
});
};

关于javascript - 如何在 Meteor 中将数据从服务器传递到客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31830721/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com