2016-11-01 7 views
4

私の反応するネイティブアプリでは、ビッグオブジェクトを非同期にストリング化(シリアル化)し、UIスレッドをブロックしないようにする必要があります。JavaScriptのJSONにAsync stringify(serialize)

このような何かが必要:

// logs "{foo:bar}" 
JSON.stringifyAsync({ foo: "bar" }).then(x => console.log(x)); 

を約束にJSON.stringifyをラップすることを提案しないでください、それは非同期なりません。

+0

@ssube JSON.stringifyはアプリをフリーズしていますが、それはあなたには明らかではありませんか?私が見つけたすべての非同期ライブラリは、実際に同期しています。 –

+3

最初の選択は機能しませんでした。どのストリーミングJSONパーサをテストしましたか、そこに問題が見つかりましたか?あなたはすでに何をしたのかに関する情報はありますか? – ssube

+0

私はストリーミングjsonパーサーは必要ありません、私は真の非同期1つが必要です。あなたは答えを持っている場合plsそれを与えるだけです。あなたのダウンフォートの理由は何ですか? –

答えて

5

を。これはnode.js(herehere、およびhereを参照)の問題です。ブラウザや他のJSエンジンにとって状況はそれほど良くないとは思いません。

JSON.stringifyAsyncのメソッドを追加するEcmaScriptの提案(hereを参照)があります。私はこの提案の状態を知らない。提案から:"この提案の実際の効果を飛び越える方法はありません。"これは、現在、これを行う方法がないという提案者の意見に似ているようです。

+0

これは悪いです。答えをありがとう。もし私が正しいと理解すれば、bcsは文字列以外のノードスレッドを残すことはできません。 –

+0

@AlexanderDanilov - ええ、それは深刻な欠点のようです。申し訳ありませんが、私はより良いものを提供することはできませんでした –

+0

あなたがこの質問を再開するために投票した場合、私はうれしいでしょうbcsあなたはそれを求める人のためにかなり良い答えを提供しました。 –

0

多分、オブジェクトを分割し、処理された部分を最後にマージすることができます。

またはこのような何か:私は、これは現在可能ではないと思います

async.eachOf(obj,function(value,key,callback){ 
    async.setImmediate(function(){ 

    // do something 

    }); 
}, function(err,reply){ 

}); 
+0

これはちょうど悪いハックです、私は真の非同期が必要です –

+0

http://azimi.me/2015/07/30/non-blocking-async-json-parse.html?utm_source=javascriptweekly&utm_medium=email – user2429266

関連する問題