Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Parse platform 解析承诺。跨承诺访问变量_Parse Platform - Fatal编程技术网

Parse platform 解析承诺。跨承诺访问变量

Parse platform 解析承诺。跨承诺访问变量,parse-platform,Parse Platform,解析承诺。我不熟悉使用承诺。下面是一个相当简单的例子。因此,我从一个承诺中得到的结果,我不知道如何将它传递给下一个承诺。非常感谢你的想法!我尝试了几个想法。除了最后一个“硬编码”的想法外,其他都不管用 假设您正在使用自定义承诺,您可以通过承诺结果的成功回调将承诺的结果传递给另一个 extends.foo = function(){ var promise = new Parse.Promise(); var query = new Parse.Query(Parse.User

解析承诺。我不熟悉使用承诺。下面是一个相当简单的例子。因此,我从一个承诺中得到的结果,我不知道如何将它传递给下一个承诺。非常感谢你的想法!我尝试了几个想法。除了最后一个“硬编码”的想法外,其他都不管用


假设您正在使用自定义承诺,您可以通过承诺结果的成功回调将承诺的结果传递给另一个

extends.foo = function(){

    var promise = new Parse.Promise();

    var query = new Parse.Query(Parse.User);
    query.equalTo("name","Joe");
    query.find().then(function(results) {        

      if (results.length > 0)
        promise.resolve(results[0]);
      else
        promise.reject(-2);

    }, function(error) {
        promise.reject(-1);
    });

    return promise;
}


extends.foo2 = function(){

    var promise = new Parse.Promise();

    this.foo().then(function(result){

      // success case
      promise.resolve({uselessParam:123,firstResult:result})


    },function(error){

      // error case
      promise.reject(error); // so, -1 or -2 returned by the promise in foo()

    });
    return promise;
}


// usage

extends.foo3 = function(){

    this.foo2().then(function(result){

      console.log(result.uselessParam); // added in the foo2()
      console.log(result.firstResult); // returned by the foo() and added again in the foo2() 

    },function(error){

      console.log(error); // so, -1 or -2 returned by the promise in foo()

    });
}
您还可以在主函数中定义一个变量,在该函数中使用承诺(但不使用承诺),以便按承诺设置承诺


希望能有帮助!

Luca:谢谢。我很难理解你的代码。下一个承诺将传递什么?诀窍是在他的Promise.resolve方法的承诺“1”中传递一个值“hello”(这意味着你在使用它时能够在成功回调中读取的值)。我创建了一些函数,它将promise作为函数结果返回。当您在query.find()中进行查询时,“.then()”方法将“success callback”作为第一个参数,将“error callback”作为第二个参数。在他的成功回调中,例如将其写入“function(result){..}“您可以从结果中检索传递的hello值,在该结果中,您以前已使用promise.resolve进行了分配
extends.foo = function(){

    var promise = new Parse.Promise();

    var query = new Parse.Query(Parse.User);
    query.equalTo("name","Joe");
    query.find().then(function(results) {        

      if (results.length > 0)
        promise.resolve(results[0]);
      else
        promise.reject(-2);

    }, function(error) {
        promise.reject(-1);
    });

    return promise;
}


extends.foo2 = function(){

    var promise = new Parse.Promise();

    this.foo().then(function(result){

      // success case
      promise.resolve({uselessParam:123,firstResult:result})


    },function(error){

      // error case
      promise.reject(error); // so, -1 or -2 returned by the promise in foo()

    });
    return promise;
}


// usage

extends.foo3 = function(){

    this.foo2().then(function(result){

      console.log(result.uselessParam); // added in the foo2()
      console.log(result.firstResult); // returned by the foo() and added again in the foo2() 

    },function(error){

      console.log(error); // so, -1 or -2 returned by the promise in foo()

    });
}