Javascript 如何在Angular.JS中使用流式JSON?

Javascript 如何在Angular.JS中使用流式JSON?,javascript,json,angularjs,stream,streaming,Javascript,Json,Angularjs,Stream,Streaming,我有一个createDB函数,它绑定到控制器中的作用域,代码如下: 功能: function createDB(resource, args, scope, database, server, script_bool) { // Creates a new database with the name in the database argument args.name = database; args.script = script_bool; scope.su

我有一个createDB函数,它绑定到控制器中的作用域,代码如下:

功能:

function createDB(resource, args, scope, database, server, script_bool) {
    // Creates a new database with the name in the database argument
    args.name = database;
    args.script = script_bool;
    scope.success = null;
    scope.loadingResponse = true;

resource('http://localhost:1000/apiv1/servers/:server/databases',
    {server: server}, {create: {method: 'POST', params: args,
    transformResponse: function(data){return data}}})
    .create(args).$promise.then(function (result) {
        console.log(JSON.stringify(result))
        console.log(result);
        })
}
控制器绑定:

$scope.createDB = function (database){createDB($resource,
    $scope.args, $scope, database, serverTools.getName(),
    $scope.scripts);};
其中,
$scope.args
serverTools.getName()
$scope.scripts
是在HTML端设置的变量

目前我只是记录一些事情,但将来我希望能够提供创建过程的状态更新。为了做到这一点,每当创建数据库时,我都会从API流式传输一系列新行分隔的JSON对象。它们看起来像这样:

{"progress": "1" "verbose": "Start" "success": true}\n
{"progress": "50" "verbose": "Database Created Successfully" "success": true}\n
{"progress": "100" "verbose": "CAD scripts for __test_create run successfully" "success": true}\n
{"progress": "complete" "statuses": ["progress": "50" "verbose": "Database Created Successfully" "success": true "progress": "100" "verbose": "CAD scripts for __test_create run successfully" "success": true] "verbose": "Complete" "success": true}
一旦操作完成,就会发送JSON。目标是将这些链接到一个加载条中,以便用户知道过程是如何进行的。理想情况下,服务将不断更新加载条,直到收到“进度”为“完成”的响应,此时它将检查总体成功值并相应地给加载条上色

我不担心设置加载栏。我遇到的问题是解析JSON<代码>控制台日志(结果)只给我第一个JSON对象(
{“progress”:“1”“verbose”:“Start”“success”:true}
),而
console.log(JSON.stringify(result))给了我一个混乱,我将在底部包括。我也不想等到所有东西都返回,我需要在第一个JSON对象到达后立即开始更新作用域

我想知道的是:在Angular.js中,从RESTful API接收流数据的公认最佳实践是什么,我应该如何实现?或者我应该使我的API函数更小,并放弃流式处理而支持多个HTTP请求

以下是
JSON.stringify(请求)
结果:

[11:46:17.812] "{"0":"{","1":"\"","2":"p","3":"r","4":"o","5":"g","6":"r","7":"e","8":"s","9":"s","10":"\"","11":":","12":" ","13":"\"","14":"1","15":"\"","16":",","17":" 
","18":"\"","19":"v","20":"e","21":"r","22":"b","23":"o","24":"s","25":"e","26":"\"","27":":","28":" 
","29":"\"","30":"S","31":"t","32":"a","33":"r","34":"t","35":"\"","36":",","37":" 
","38":"\"","39":"s","40":"u","41":"c","42":"c","43":"e","44":"s","45":"s","46":"\"","47":":","48":" 
","49":"t","50":"r","51":"u","52":"e","53":"}","54":"\n","55":"{","56":"\"","57":"p","58":"r","59":"o","60":"g","61":"r","62":"e","63":"s","64":"s","65":"\"","66":":","67":" 
","68":"\"","69":"5","70":"0","71":"\"","72":",","73":" ","74":"\"","75":"v","76":"e","77":"r","78":"b","79":"o","80":"s","81":"e","82":"\"","83":":","84":" 
","85":"\"","86":"D","87":"a","88":"t","89":"a","90":"b","91":"a","92":"s","93":"e","94":" ","95":"C","96":"r","97":"e","98":"a","99":"t","100":"e","101":"d","102":" 
","103":"S","104":"u","105":"c","106":"c","107":"e","108":"s","109":"s","110":"f","111":"u","112":"l","113":"l","114":"y","115":"\"","116":",","117":" 
","118":"\"","119":"s","120":"u","121":"c","122":"c","123":"e","124":"s","125":"s","126":"\"","127":":","128":" 
","129":"t","130":"r","131":"u","132":"e","133":"}","134":"\n","135":"{","136":"\"","137":"p","138":"r","139":"o","140":"g","141":"r","142":"e","143":"s","144":"s","145":"\"","146":":"
,"147":" ","148":"\"","149":"1","150":"0","151":"0","152":"\"","153":",","154":" 
","155":"\"","156":"v","157":"e","158":"r","159":"b","160":"o","161":"s","162":"e","163":"\"","164":":","165":" ","166":"\"","167":"C","168":"A","169":"D","170":" 
","171":"s","172":"c","173":"r","174":"i","175":"p","176":"t","177":"s","178":" ","179":"f","180":"o","181":"r","182":" 
","183":"_","184":"_","185":"t","186":"e","187":"s","188":"t","189":"_","190":"c","191":"r","192":"e","193":"a","194":"t","195":"e","196":" ","197":"r","198":"u","199":"n","200":" 
","201":"s","202":"u","203":"c","204":"c","205":"e","206":"s","207":"s","208":"f","209":"u","210":"l","211":"l","212":"y","213":"\"","214":",","215":" 
","216":"\"","217":"s","218":"u","219":"c","220":"c","221":"e","222":"s","223":"s","224":"\"","225":":","226":" 
","227":"t","228":"r","229":"u","230":"e","231":"}","232":"\n","233":"{","234":"\"","235":"p","236":"r","237":"o","238":"g","239":"r","240":"e","241":"s","242":"s","243":"\"","244":":"
,"245":" ","246":"\"","247":"c","248":"o","249":"m","250":"p","251":"l","252":"e","253":"t","254":"e","255":"\"","256":",","257":" 
","258":"\"","259":"s","260":"t","261":"a","262":"t","263":"u","264":"s","265":"e","266":"s","267":"\"","268":":","269":" 
","270":"[","271":"{","272":"\"","273":"p","274":"r","275":"o","276":"g","277":"r","278":"e","279":"s","280":"s","281":"\"","282":":","283":" 
","284":"\"","285":"5","286":"0","287":"\"","288":",","289":" ","290":"\"","291":"v","292":"e","293":"r","294":"b","295":"o","296":"s","297":"e","298":"\"","299":":","300":" 
","301":"\"","302":"D","303":"a","304":"t","305":"a","306":"b","307":"a","308":"s","309":"e","310":" ","311":"C","312":"r","313":"e","314":"a","315":"t","316":"e","317":"d","318":" 
","319":"S","320":"u","321":"c","322":"c","323":"e","324":"s","325":"s","326":"f","327":"u","328":"l","329":"l","330":"y","331":"\"","332":",","333":" 
","334":"\"","335":"s","336":"u","337":"c","338":"c","339":"e","340":"s","341":"s","342":"\"","343":":","344":" ","345":"t","346":"r","347":"u","348":"e","349":"}","350":",","351":" 
","352":"{","353":"\"","354":"p","355":"r","356":"o","357":"g","358":"r","359":"e","360":"s","361":"s","362":"\"","363":":","364":" 
","365":"\"","366":"1","367":"0","368":"0","369":"\"","370":",","371":" 
","372":"\"","373":"v","374":"e","375":"r","376":"b","377":"o","378":"s","379":"e","380":"\"","381":":","382":" ","383":"\"","384":"C","385":"A","386":"D","387":" 
","388":"s","389":"c","390":"r","391":"i","392":"p","393":"t","394":"s","395":" ","396":"f","397":"o","398":"r","399":" 
","400":"_","401":"_","402":"t","403":"e","404":"s","405":"t","406":"_","407":"c","408":"r","409":"e","410":"a","411":"t","412":"e","413":" ","414":"r","415":"u","416":"n","417":" 
","418":"s","419":"u","420":"c","421":"c","422":"e","423":"s","424":"s","425":"f","426":"u","427":"l","428":"l","429":"y","430":"\"","431":",","432":" 
","433":"\"","434":"s","435":"u","436":"c","437":"c","438":"e","439":"s","440":"s","441":"\"","442":":","443":" 
","444":"t","445":"r","446":"u","447":"e","448":"}","449":"]","450":",","451":" 
","452":"\"","453":"v","454":"e","455":"r","456":"b","457":"o","458":"s","459":"e","460":"\"","461":":","462":" 
","463":"\"","464":"C","465":"o","466":"m","467":"p","468":"l","469":"e","470":"t","471":"e","472":"\"","473":",","474":" 
","475":"\"","476":"s","477":"u","478":"c","479":"c","480":"e","481":"s","482":"s","483":"\"","484":":","485":" 
","486":"t","487":"r","488":"u","489":"e","490":"}","$promise":{},"$resolved":true}"

就我个人而言,我会选择较小的请求,但它不再被视为“流”,我认为您无论如何都不希望使用JSON