私は分度器での基本的な機能は、書かれていますこれです。値を取得して外部から返す必要があります。then(function(url){...}
javascriptで関数変数のスコープを拡張する方法は?</p> <pre><code>this.getCurrentUrl = function() { browser.getCurrentUrl().then(function(url){ console.log('url : '+url); }); }; </code></pre> <p>は、今私は内側の関数スコープの外で「URL」をアクセスすることができる方法がある私は、いくつかの他の関数呼び出しに、この値を返す必要があるため、:として
1
A
答えて
1
URLは非同期的に取得されるため、割り当てることはできません。コールバックを渡したいと思うかもしれません。
function handleUrl(url) {
// here is where you do something with the url
}
// let your callback be called
this.getCurrentUrl = function(fn) {
browser.getCurrentUrl().then(function (url) {
fn(url);
})
}
// make the call with your handler
this.getCurrentUrl(handleUrl);
もう1つの方法は、関数が「コンテナ」を返すようにして、後で膨らませる方法です。その後、コンテナを確認することができます。動作非同期であるあなたが間隔か何かでそれを確認することができますので、それは、準備ができてたとき、あなたは知らないでしょう...
// return a container object
this.getCurrentUrl = function() {
var urlContainer = {};
browser.getCurrentUrl().then(function (url) {
urlContainer.url = url;
});
return urlContainer;
}
var urlContainer = this.getCurrentUrl(); // starts off as an empty object
urlContainer.url // undefined
// then shortly in the future
urlContainer.url // has some url
のでしかし、第三の方法は、閉鎖
を返すことですthis.getCurrentUrl = function() {
var urlValue;
browser.getCurrentUrl().then(function(url) {
urlValue = url;
});
return function() {
return urlValue;
}
}
var getUrl = this.getCurrentUrl();
getUrl(); // initially, returns undefined;
// keep trying. then shortly in the future...
getUrl(); // now has the url
+0
ここでgetUrl()を呼び出す必要がありますか? –
+0
あなたが直面している問題は、URLを取得する操作が非同期であることです。したがって、単に 'var url = getCurrentUrl()'と言うことはできません。コールバックを使用して、コールバックにURLまたは何かを行う必要があります。第2または第3のアプローチを使用する必要があります。 –
関連する問題
- 1. Struts2のは、ここに私のコードの抜粋です私はフォームを送信するjavascript関数を使用していて、JavaScript関数に、私は<code>form.action= "Struts2 url goes here";</code></p> <p>を指定したい文字列
- 2. は、私はドキュメントのロードは、私が(「私」)plan_stateを呼び出したときに、この変数は、ユーザーとの対話</p> <pre><code>function plan_state(current){ if (current != ''){ state = current; } else { return state; } } </code></pre> <p>に応じて状態を変更する関数 で変数を収容したい
- 3. jQueryのワイルドカードは、私はこのURL</p> <p>HTTPを交換する必要があるURL
- 4. CreateAliasはどのように、私はベーステーブルに<strong>表値関数</strong>に参加したい<strong>表値関数</strong>だけではなく、テーブル、 で動作するように<strong>CreateAlias</strong>を拡張する方法があります。表値関数
- 5. はRで線形回帰と新しい関数の作成:次に</p> <p>私は、私が以前に作成したデータフレームからのデータを使用してそれを呼び出す(<code>DATOS</code>:<code>lm()</code>関数を呼び出す関数を作成するとき
- 6. Javascriptを:</p> <pre><code>!function(){ A = {init : init}}() </code></pre> <p>私は基本的に他からロードすることができるプラグインとしてこのスクリプトを使用:匿名関数を実行し、自己が
- 7. LaravelコントローラからJavaScript関数を呼び出すと、私は私のコントローラから(JavaScriptである)<em></em> firebase認証機能を呼び出したいと私は私のコントローラで返さ<code>token</code>背中をしたいが、私は続行する方法がわからないデータ
- 8. は、私は、コンソールにエラーを取得しています</em>)だから私はここが午前問題は</em>は(<em>機能HideLogin内部で呼び出しません<em>関数フレーム()ということである
- 9. AngularjsはTypeError:。。<serviceName><functionNameを>スコープで関数ではない$スコープ<functionNameを>
- 10. パイソン - 私は関数を作成し、私は<code>**criterias</code>を呼び出すキーワードとして、パラメータのセットでそれを呼び出すことができるようにしたい関数の引数として(ステップなし)
- 11. あなたは私が欠けていると思うどのような種類の機能のこれは..です__cdecl、__stdcall、または__thiscall</p> <p>求めることができる通常の関数</p> <p>.. C++でASM関数を呼び出すしようとするとC++
- 12. ANTLR:関数名と私は私の文法で<em>パラメータ</em>(値<em>ヌル</em>)と<em>関数名</em>両方として「NULL」を使用できるようにしたいと思いパラメータ
- 13. ガブガブ飲むパイソン - C++</p> <pre><code>int8_t foo(int8_t x); </code></pre> <p>私はSWIGインタフェースが、int8_tタイプを使用して、私のPythonコードからこの関数を呼び出すしたいと思い、私は8ビットの整数paramenterとしてとるC関数を持っている
- 14. 私は、これは、その後 関数を呼び出していない</p> <pre><code><?php class Helpers { public static function hello_world() { return 'Hello World'; } } ?> echo Helpers::hello_world(); </code></pre> <p>私は新しいクラスを作成し、hello_world関数を作成しますが、私は関数内のpublic static単語を削除していたときに私の問題があるしている機能
- 15. R:私は機能<strong>時間</strong>が<strong>V1</strong>変数が関数<strong>グラム</strong>で定義されて見ることができますどのようにお願いしたいローカル変数
- 16. コールhtmlとスコープ変数からangularjsコントローラ内の関数は、私がangularjsで初心者です、私は、コードを書いているangularjs</p> <p>内のHTMLから、コントローラで定義される関数を呼び出す方法を知っておく必要があり
- 17. アップロードとは、この画像は私が<strong><em>CodeIgniterの</em></strong>で何をする必要があるかを示しCodeIgniterの
- 18. 私は<code>f</code></p> <pre><code>> argument_names(f) [1] "x" "y" </code></pre> <p>の引数名をできる取ることにしたい任意の関数についてはR機能
- 19. PHPにブロックレベルのスコープがないのはなぜですか?関数の内部で使用されるすべての変数はローカル関数スコープ</p> </blockquote> <p>に制限デフォルトでは、私はPHPのデザイナーから、このアーキテクチャの決定のための任意の根拠を見つけることができません</p> <blockquote> <p>:という
- 20. 自分の関数を最初に作成せずにコールバック関数にパラメータを送る方法はありますか?</p> <pre><code>$param = htmlspecialchars($param, ENT_QUOTES); </code></pre> <p>問題がある、私は私が上ではhtmlspecialcharsを実行したい値の配列を持っている:
- 21. 数値の指数値を得る方法は?私は、指数の値3を取得したい</p> <p>数= 2.6e3</p> <p>:
- 22. 私は現在、ただし、この機能に</p> <pre><code>music.playsong(data) </code></pre> <p>としてこの関数を呼び出しています定義関数-NodeJS
- 23. <cr>を関数に再マップした場合、関数内の元の<cr>をどう呼び出すことができますか?
- 24. 変数は、私がどこにに関するいくつかの記事を読んで、私は三つのファイル</p> <ul> <li>main.cの</li> <li>myStruct.h</li> <li>myStruct.c</li> </ul> <p>を持って、完成したことがないタイプ
- 25. ないここ<code>value</code></p> <p>が変数である私はjsのコードでその<code>value</code>を表示するが、常に変数の<code>name</code>を取得したい私のjsのコード内の変数を持って
- 26. ウィンドウタブのアンギュアリスで関数(UNBOUND関数)を呼び出すにはどうすればいいですか?ウィンドウが閉じられるか場所が <p>私のサンプル関数の呼び出しがある</p>を変えた上で、私は、コントローラ上のAJAX呼び出しを持っている
- 27. 関数呼び出しに値を関連付ける方法は?私はいつもこのようにそれをやった</p> <pre><code>if (value == certainValueA) call functionA() if (value == certainValueB) call functionB() </code></pre> <p>:
- 28. スワップ()関数は、私は、関数partitionk()、私はエラーに</p> <p>"エラーが出る中でのスワップ()を使用しようとする++
- 29. この関数宣言の乱用は未定義の動作を呼び出しますか?</p> <pre><code>int main() { int exit(); ((void(*)())exit)(0); } </code></pre> <p>あなたが見ることができるように、<code>exit</code>が間違った戻り値の型で宣言されていますが、間違った関数型と呼ばれることはありません:
- 30. は私がランダム<strong>scores1</strong>は、最初の変数であることと、整数で選択された5つの変数を作成するために使用する必要が</strong>をスコアリング機能<strong>を有する1つの関数
本当に疑問が重複していると思われます。つまり、 "async functionからの戻り値"です...あなたのサンプルに非同期コードがないことを確認してください(混乱している '.then(...)それはケースです) –
分度器自体が非同期ですので、そうです、それは確かです –
基本的に、非同期呼び出しを行っている場合、この関数から戻り値を取得することはできません。上のリンクを見て、この関数を呼び出す関数が非同期応答を期待するようにしてください。 – UtsavShah