我正在尝试从SQL数据库中检索数据并编写以下函数:
$scope.sqlRequest = function (Req) {
console.log("Main.js requesting from DB :", Req)
return server_operations.sqlRequest([Req])
.success(function (Results) {
console.log("Results returned to .success = ", Results);
return Results.data
});
}
运行该功能时,结果会在控制台中正确显示。 但是,当我尝试在任何进一步的上下文中使用数据时:
Res = $scope.sqlRequest("<Some SQL String here>")
变量Res始终未定义。 我需要更改什么才能将数据转换为全局变量?
答案 0 :(得分:-1)
您需要使用回调函数中返回的响应,因为它是异步的。 var myVar = myAsycnFunction();
将始终未定义,因为在评估数据库调用时,不会返回任何响应。相反,尝试
.success(function( results ){
processResults( results );
});
其中processResults()
是一个带有逻辑的函数,用于处理你想对结果做什么。
编辑以澄清:如果您只想使用一个函数来处理结果,您可以在成功函数中调用它,传入结果数据。如果您想要更灵活,可以传入回调函数以在成功函数中调用并传入结果数据,如下例所示。
$scope.sqlRequest = function( req, callback ) {
server_operations.sqlRequest( req )
.success( function( res ) {
// invoke the callback function we pass in to process results from the request
callback( res.data );
});
}
function processData( data ){
// I do something with the data
}
// call your data fn and pass in a callback to process the results
$scope.sqlRequest( req, processData );
&#13;