在服务器上调用Meteor方法在函数完成之前返回

时间:2014-07-10 00:39:45

标签: meteor

我使用以下代码在服务器上调用方法:

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)返回回调中的值?

1 个答案:

答案 0 :(得分:1)

使用期货。

@Future = Npm.require('fibers/future')

然后:

Meteor.methods
  getTitle: (url) ->
    ...
    fut = new Future()
    doSomething ->
      ...
      fut.return {success: true}
    fut.wait()