javascript – Meteor方法调用在客户端返回undefined但在服务器上没有
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – Meteor方法调用在客户端返回undefined但在服务器上没有,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1881字,纯文字阅读大概需要3分钟。
内容图文
![javascript – Meteor方法调用在客户端返回undefined但在服务器上没有](/upload/InfoBanner/zyjiaocheng/806/38d85cc8c4ba44879867e945c82fb56e.jpg)
UPDATE
我刚刚意识到这种方法存在根本性的错误,并且嵌套的回调不能向其父回调返回一些内容.我在JS世界中来得很晚,来自Promises时代,并不知道这是回调的问题.但我没有看到Meteor使用promises的足够例子,所以我使用了回调.但是,如果这个代码可以改进,我会非常感激.
题
所以我正在使用以下方法从客户端调用方法:
Meteor.call('cart.useProfileAddress', {}, (error, address) => {
console.info('Address', address) // this returns undefined on client
})
这是我的api / carts / cartsMethod.js中的方法
export const useProfileAddress = new ValidatedMethod({
name: 'cart.useProfileAddress',
validate(args) {
//
},
run(args) {
const person = Persons.findOne({'userId': Meteor.userId()});
// If I do the return here I get the address in the browser as defined.
// return person.address
// I'm calling another method under here:
getClosestStore.call({address: person.address}, (error, result) => {
// And another one method call here:
updateCartAddress.call({address: person.address}, (error, result) => {
// So once all the callbacks are done return the address here.
// However the problem is I get `undefined` on the client.
if (!error) {
// console displays something on the Server but is `undefined` on the Client
console.info('Returning Address', person.address)
return person.address
}
})
})
}
})
上面的代码可能有什么问题?可能是因为我试图从嵌套回调中获取值吗?
也有人知道如何避免这些嵌套回调吗?我知道如何使用promises在Node上进行,但在Meteor中(我使用的是1.4)我仍然无能为力.
解决方法:
方法可以在服务器上同步运行,因此您不需要使用回调.执行后将返回方法的结果,否则将在发生错误时抛出异常.试试这个:
export const useProfileAddress = new ValidatedMethod({
// ...
run(args) {
const person = Persons.findOne({'userId': Meteor.userId()});
const result1 = getClosestStore.call({address: person.address});
// use result1 if you need to
const result2 = updateCartAddress.call({address: person.address});
// // use result2 if you need to
return person.address;
}
})
内容总结
以上是互联网集市为您收集整理的javascript – Meteor方法调用在客户端返回undefined但在服务器上没有全部内容,希望文章能够帮你解决javascript – Meteor方法调用在客户端返回undefined但在服务器上没有所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。