我使用以下代码在服务器上调用方法:
Meteor.call 'getTitle', post.url, (error, title) ->
console.log 'client side title is: ' + title
并在服务器上:
Meteor.methods
getTitle: (url) ->
fullURL = addhttp(url)
read fullURL, (err, article, meta) ->
if err
console.log err
err
else
console.log article.title
article.title
在客户端上,返回值未定义。我希望它从read函数返回article.title值。因为一旦调用了read函数,它就会继续运行,并且不会等待带有返回数据的回调。要清楚地看到这一点,如果我修改函数以在读取函数下面包含一个返回值,则会正确发送返回值。
Meteor.methods
getTitle: (url) ->
fullURL = addhttp(url)
read fullURL, (err, article, meta) ->
if err
console.log err
err
else
console.log article.title
article.title
return 'this return value is sent!'
但是如何调用此方法,让它从read函数(article.title)返回回调中的值?
答案 0 :(得分:1)
使用期货。
@Future = Npm.require('fibers/future')
然后:
Meteor.methods
getTitle: (url) ->
...
fut = new Future()
doSomething ->
...
fut.return {success: true}
fut.wait()