13

私は単純なチャート作成ツールを構築しています。ユーザーがデータ ソースとグラフの種類を選択すると、特定のグラフ (.js) のデータとスクリプトの両方が読み込まれ、コードがグラフをレンダリングします。

現在、次のシーケンスを使用しています。

  1. チャート スクリプトを読み込む
  2. データをロードする
  3. グラフをレンダリングする

パフォーマンスを向上させるために、Promise を実装し、スクリプトとデータを並行してロードしたいと考えています。jQuery のようなライブラリは私のニーズには大きすぎます (質問のポイントは、これについて議論することではありません)。もっと軽量なソリューションはありますか? たぶん 1 ~ 2 kb のライブラリ、またはチュートリアルですか? 繰り返しますが、これは 2 つのアクションを並行して行う非常に基本的な実装です。

[更新] すべての返信が見栄えが良いので、すべての返信に賛成票を投じました。もう少しテストをしたら、また報告します。

4

7 に答える 7

13

JavaScriptでpromisesを実行する標準的な方法になりつつあるPromises/A仕様の実装を使用することを強くお勧めします。Promiseは、全員が同じフレーバーを使用するとうまく機能するため、互換性のある実装を使用することは全員の利益になります。

Qはおそらく最も人気があり、完全な機能を備えた実装です(jQueryやその他の互換性のないpromiseも適応します)が、whenrsvpはより「軽量」であると考えられています。

于 2013-01-24T09:43:39.427 に答える
7

ここに開発があったので、私の2¢を投入したかった. Promise は JavaScript にネイティブに組み込まれており、FF 30 および Chrome 33 で実装されます (この表によると)。

通常は「IE6 をサポートしていますか?」という質問が殺到している場所で言及する価値はほとんどありませんが、「基本的に rsvp.js の API 再マッピング」である 2kb の縮小および gzip されたポリフィルここにあります

jQueryの promiseは実際には promises ではないため、promise の構文がライブラリ間で一貫していないというこの男に同意するので、ネイティブの promise は、おそらくユーザーのブラウザがまだサポートしていなくても、実装する価値があると考えています。


編集: どちらもQに非常に似ている Angular と Firefox アドオン SDK のコンテキストで Promises を使用した後、私はその構文を好み、ネイティブ実装よりもまだ高速であることを読みました。

于 2014-02-17T17:49:22.563 に答える
4

しばらく前に、「when-then」と呼ばれるこのようなものを作成しました。「これらをすべてロードし、完了したら何かを実行する」というようなものが欲しかったのです。

https://github.com/geuis/when-then

私は promises のアイデアに触発されましたが、単純なタスクにはもう少し単純なものが必要でした。

于 2012-10-16T21:24:45.203 に答える
1

本当に軽量にしたい場合はsb-promiseを試してみてください. MIT ライセンスの下にあります. これはわずか数 kbs であり、ネイティブ Promises と API 互換です。

function myFunction(){
   return new Promise(function(resolve,reject){
     resolve({some:"data"});
   }
}
myFunction().then(function(result){
   console.log(result); // {some:"data"}
});
于 2015-01-19T00:08:16.947 に答える
0

asyncを試してください。

操作を並列および直列に実行するメソッドがあります。もともとノードで実行するように設計されていましたが、現在はブラウザーでも動作します。

編集して追加: 縮小版がないため、完全なエンチラーダは ~42kb です。

于 2012-10-16T21:19:11.263 に答える