流星与承诺?

问题描述:

我很难理解流星中Promise包的文档,Meteor支持在客户端开箱即用的承诺吗?我还没有找到一个例子。流星与承诺?

在目前的Meteor(1.3)中,你不需要Promise包。 改为包含ecmascript包,这将为您提供ES6标准承诺以及“等待”支持,这比承诺更容易理解,并使代码更具可读性。

参见例如https://forums.meteor.com/t/start-using-async-await-instead-of-promises-and-callbacks/17037https://www.twilio.com/blog/2015/10/asyncawait-the-hero-javascript-deserved.html

排序的。流星方法有内置的异步回调:

Meteor.call('myMethod', foo1, function (err, res) { 
    //this code waits for err or res 
}) 

我用FutureJS:

Future = Npm.require('fibers/future'); 
    var myFuture = new Future(); 

    SomeAsynchronousFunction("foo", function(err, res) { 
    if (err) { 
     myFuture.throw(err); 
    } else { 
     myFuture.return(res); 
    } 
    }); 

    return myFuture.wait(); 

所以,如果你正在做一个GET要求,更换SomeAsynchronousFunction()...有:

Meteor.http.call('GET', 'someUrl', function(err, resp) { 
    if (err) { 
    myFuture.return(err); 
    } else { 
    myFuture.return(resp); 
    } 
});