如何使用Deferred与基本的javascript函数?

时间:2013-07-23 02:15:11

标签: jquery

我想做以下事情:

dataservice.doThis(folderIds).then(doThat(setIds));

doThisdoThat不返回任何内容。我正在阅读延期和承诺,但未能实现这一点。如果doThat中的所有内容都已完成,我怎么能告诉doThis不要运行?

1 个答案:

答案 0 :(得分:0)

如果您打算使用then,您需要某种承诺系统(即使这意味着您自己重新实施)。你不能这样做没有doThis返回一个承诺,然而(它确实需要解决这个承诺,你需要的ID ):

var dataservice = {
    doThis: function doThis(folderIds) {
        var future = new PromiseAPlusCompliantPromise();
        makeXHR("/some/endpoint",  // endpoint
                {folderIds: folderIds},  // data to send
            function sucess(setIds) {  // success handler
                future.resolve(setIds);
        });
        return future;  // Note that we do have to return a promise here
    }
};

function doThat(setIds) {
    // Do whatever here
    // No need to return anything
}

dataservice.doThis([1, 2, 3]).then(doThat);