有没有人有一个实际有效的解析承诺的例子? (云API)

时间:2013-06-16 19:14:01

标签: jquery parse-platform promise

我正在努力让parse.com使用解析云API来实现新的承诺〜我的意思是。可悲的是,我遇到了一些麻烦 - 我找不到任何关于如何使其工作的真正讨论(api似乎都是谎言或无能)

这是我的代码:

query.find(
    function(results){
        if (results.length > 0){
            return results[0].get("id");
        } else {
            response.error("Nothing found. Sod this.");
        }
    },
    function(error){
        response.error("ServerDown");
    }
).then(
    function(moduleId){
    //do anything here, i don't know, increment module? Who cares!
    },
    function(error){
        console.log("error");
    }
);

无论出于何种原因,此代码都无效

我收到错误:

{"代码":141,"错误":" TypeError:无法调用方法'然后'未定义\ n在getModuleIdIfAny(main.js:71:4)\ n在main.js:50:2"}

指向).then(

的行

如果你能提供答案,我的笔记本电脑会爱你,否则它必须迅速发展翅膀。

2 个答案:

答案 0 :(得分:6)

这里有一些有用的代码。

exports.lookupXByID = function (object)
// Must fulfill with an error when this lookup fails
// Sucessful returns must return X
{ 
    console.log("lookupXByID.entry");

    var X = Parse.Object.extend("X");
    var query = new Parse.Query(X);

    console.log("lookupXByID.query(" + object.id + ")");
    query.equalTo("objectId", object.id);
    var promise0 = query.first();
    var promise1 = promise0.then(
        function(result) {
            console.log("lookupXByID.promise0.success");
            if (typeof result === "undefined") {
                return utilMod.promiseerror(10004, "No matching X ID");
            } else {
                // We have a match
                return result;
            };
        }
    );
    console.log("lookupXByID.exit");
    return promise1;
};

我不确定你的失败原因。此代码有效并且非常有用,因为通过ID检索对象的标准调用不会返回promise。我以这种方式命名我的承诺并使用你看到的日志记录语句,以便我可以跟踪日志中的执行情况。我已经成长为真正的承诺,甚至创建了一个与iOS一起使用的Objective-C版本。

祝你好运。

-Bob

答案 1 :(得分:1)

原来?我使用的是旧版本的解析库。

要获取最新版本go here

它在“javascript”下〜嗯,除此之外,真的。

要实际使用最新版本,请转到path_to_parse / config / global.json

在条目中

"global": {
    "parseVersion": "put_the_value_you_want_here"
}