/**
* Gets a user's data request
* @return {jQuery.jqXHR}
*/
function getUserData(userId){
return $.getJSON('/usr/' + userId);
}
/*
* Handles the result of a user data request.
* @param {Object} data The JSON object, already converted to an Object.
*/
function doSomethingWithUserData(data) {
console.log('do something with user data:', data);
}
getUserData(userId).done(handleUserData);
としてJSONの対象となり、それはですオブジェクトでさえない。
引用JQuery's types documentation:jQueryの1.5のよう
、$アヤックス()メソッドは、XMLHTTPRequestオブジェクトのスーパーセットであるjqXHRオブジェクトを返します。 $.get
と$.getJSON
が$.ajax
のために、両方の略記法であるため、詳細については、$アヤックスエントリ
のjqXHRセクションを参照してください、同じことが当てはまります。
私はpromiseとハンドラを使用しています。私はハンドラから関数を作りましたので、より明確に文書化することができましたが、これはしばしば無名関数で行われます。
$.get
を$.getJSON
に変換しました。が呼び出されます(文字列の返信がオブジェクトに変換されます)。 $.get
のハンドラは代わりに@param {string}
になります。コメントのOPで
アップデートは、将来DEVが呼び出しに期待するものを知っているように、カスタムデータでこれをどのように処理するかを尋ねました。
データを取得しましたので、これを文書化してみましょう。
複雑さや初期化を行う場合は、3つの良い解決策があります。
@propertyを使って@typedefを作成してプロパティを記述するのが最も簡単ですが、これは追加のコードを必要とせず、純粋にドキュメントです。使用中の
goog.provide('UserData');
/*
* UserData (in the style of Closure's JSDocs)
* @typedef {{
* name: {string},
* title: {string}
* }}
*/
UserData;
または
/*
* UserData (in the style of useJSDocs)
* @typedef {Object}
* @property {string} name
* @property {string} title
*/
var UserData;
:
/*
* Handles the result of a user data request.
* @param {UserData} data The JSON object, already converted to an Object,
* cast to UserData
*/
function doSomethingWithUserData(data) {
console.log('do something with user data:', data);
}
と似ており、あなたにとってより有用である可能性が@interface @record。 最後に、あなたがlet user = new UserData(jsonUser)
になっているまっすぐなクラスがあります。あなたがデフォルト設定/初期化を数行以上集めてクラスに入れることができれば、これは私が行くことを示唆しています。
* "上記の例では、返されるデータはJSONのオブジェクトになります。「*できません。 '$ .get'は同期です。実際には 'jqXHR'オブジェクトを返します。また、JavaScriptオブジェクトはJSONではありません。 –
はいわかっています。それが私の質問のポイントで、なぜ「jQueryを返す」と言われていますか?私は、標準的な方法がある場合にこの結果を返すことができるデータを提供したいと思いますが、jsdocの例では見つかりません。 – BarryBones41