解析Promise返回值

Sim*_*One 1 javascript parse-platform

我有一个函数,可以运行查询(返回承诺),然后处理返回的数据。如何获得调用函数以访问已操纵的数据?

调用是这样的:

getAgeGroupList().then(function (result) {
        // Would like to access manipulated data here.
    });
Run Code Online (Sandbox Code Playgroud)

并且功能如下。该query.find()回报承诺的解析。

function getAgeGroupList(){
    var query = new Parse.Query("Fixtures_and_results");
    return query.find({
        success: function(results) {
             /* Manipulate results here, then return manipulated data */
             // How do I return the manipulated data? e.g return(newArray)
        },
        error: function(error) {  
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 5

如果query.find返回承诺,那么您就不想使用successerror处理程序;而是使用then操纵值:

function getAgeGroupList(){
    var query = new Parse.Query("Fixtures_and_results");
    return query.find().then(results => {
        // Manipulate results here
        return updatedResults;
    });
}
Run Code Online (Sandbox Code Playgroud)

这将返回一个新的承诺,该承诺将以您的操纵结果而不是原始结果来解决。这就是承诺链

如果query.find调用失败,则其诺言将被拒绝,由创建的诺言then将传递该拒绝(不调用then处理程序)。


我在上面使用了箭头功能,但在您的代码中,它除了promise外没有使用任何ES2015 +功能。因此,您可能需要:

function getAgeGroupList(){
    var query = new Parse.Query("Fixtures_and_results");
    return query.find().then(function(results) { // <=== Changed to traditional function
        // Manipulate results here
        return updatedResults;
    });
}
Run Code Online (Sandbox Code Playgroud)

代替。