私はJavaScriptの約束を理解しようとしています。同期JS関数から約束を返す
私のシナリオでは、ローカルの「キャッシュ」からデータを返すか、またはサーバーからデータを取得するためのHTTP呼び出しを行うメソッドを記述したいと思います。非同期呼び出しが行われていなくてもJS関数のユーザーに統一されたAPIがあるように常に約束を返すようにしたい。どのように私はJavascriptでそれを達成することができます。私はES 5に入っています。
私はJavaScriptの約束を理解しようとしています。同期JS関数から約束を返す
私のシナリオでは、ローカルの「キャッシュ」からデータを返すか、またはサーバーからデータを取得するためのHTTP呼び出しを行うメソッドを記述したいと思います。非同期呼び出しが行われていなくてもJS関数のユーザーに統一されたAPIがあるように常に約束を返すようにしたい。どのように私はJavascriptでそれを達成することができます。私はES 5に入っています。
あなたはそれらを欲しいですPromise.resolve
すぐに解決される値をとります。あなたはes5上にいるので、Bluebirdのような約束のライブラリを使うか、Babelのようなトランスパイラーを使ってES6をES5にコンパイルすることができます。
Bluebirdはすばらしいですが、より軽量なライブラリがあります厳格なES6 Promise - https://github.com/stefanpenner/es6-promise –
そうですね、私は約束書ライブラリを他のものよりも支持しているわけではありませんでした。個人的に私はBabelルートに行きます。もしnode.jsを使用していれば、v.6.2を使用していました。これはすでに約束しています。 – Kevin
最初の約束はES-6/ecma2015の機能ですので、のようなものを使用する必要があります。さらに、このポリフィルドを使用することもできますhttps://github.com/getify/native-promise-only。
var promise = getValue();
promise.then('do your stuff here ');
function getValue(){
return new Promise(function executor(resolve,error){
getData(resolve); // call your function that gets the data.
});
}
使用しているプロミスライブラリ(または、ネイティブJSを使用している場合)はわかりませんが、通常は['Promise.resolve()'](https: //developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise/resolve)を使用して、すぐに解決された約束事を作成することができます。あなたが探しているもののようなものです。また、APIの一貫性を維持するための5つ目は、複数の戻り値の型を持つ関数は、常に苦労します。 –
キャッシュで約束を使用する方法は次のとおりです。http://stackoverflow.com/questions/31421482/how-to-reuse-promises/31421769#31421769 – jfriend00