8

我需要帮助来理解一些承诺逻辑。这是我想要实现的 - 使用 jQuery 我发出 get 请求,然后我用我的 promise 将它链接起来,这会进行一些检查,我的代码:

http://jsbin.com/UVEpurU/1/edit

function checkInfoPromise(r) {
    var ok = true,
        promise = Ember.RSVP.Promise(function(resolve, reject) {
        if(ok) {
            return resolve(r);
        }
        else {
            return reject(r);
        }
        });
    return promise;
}

var requestPromise = $.get('/')
.then(function(r){
    return checkInfoPromise(r);
});

requestPromise.then(function(r) {
    console.log(r);
}).fail(function(r) {
    console.log('fail');
});

它不像我预期的那样工作。文档说它们应该可以相互正常工作,但它们不能正常工作,或者我的代码不正确。

与 jQuery+jQuery 相同的逻辑可以正常工作:

http://jsbin.com/AYeyaxO/1/edit

Ember+Ember 的工作原理:

http://jsbin.com/iMUgiDo/1/edit

4

1 回答 1

9

我不认为这两个承诺实现是可链接的。您希望将 jquery 承诺包装在 Ember 承诺中。

var requestPromise = new Ember.RSVP.Promise(function(resolve, reject) {
    $.get("/", resolve).fail(reject);
});

JSBin : http://jsbin.com/Ikubiju/1/edit?html,js,console

于 2013-09-15T02:24:09.423 回答