4
入力を呼び出してオブジェクトの配列に文字列の配列を変換します入力。これらのJSオブジェクトのプロパティは、各ユーザー名の2つのAPI呼び出しから構築されます(私は$.getJSON
呼び出しを使用しています。私は、各オブジェクトがどのように見えるところ
let userObjects = [ {...}, {...}, {...}, ... ]
のようにオブジェクトの配列を作成するためにArray.prototype.map()高階関数を使用したい
let users = ["OgamingSC2", "storbeck", "comster404"] // actual list is longer
:
私は単収縮のAPIのためのユーザ名の配列を持っています:
{
username: 'storbeck' // <-- Added by me
stream: null, // <-- Added by first API call
_links: { // <-- Added by first API call
self:'https://api.twitch.tv/kraken/streams/storbeck',
channel:'https://api.twitch.tv/kraken/channels/storbeck'
}
logo: 'http:// ... png' // <-- Added by second API call
}
これらは、2つのAPIコール関数です。私は、今、私はuserObjects
の内容をプリントアウトするとき
let userObjects = users.map((user)=>{
return getStreamInfo(user)
.done((data) => {
let result = {
username: user,
data: data
}
console.log(JSON.stringify(result)) // prints out the intended object so far
return result
})
})
:私は何を意図したオブジェクトが得られていない私のコードで、これまで持っていることである
let getStreamInfo = (username) => {
return $.getJSON('https://api.twitch.tv/kraken/streams/'+username+'?callback=?')
.then((x) => x) // should I include this then?
}
let getUserInfo = (twitchObject) => {
return $.getJSON('https://api.twitch.tv/kraken/users/'+ twitchObject.user)
}
:$.getJSON
約束をETURN取得:
"{}"
"{}"
"{}"
// ... and so on
はさらに行く、私はチェーンuserObjects
に好きで、私はgetUserInfo
に入るものは何でもから各JSオブジェクトにさらに追加したいです 関数。
これは機能的なJavascriptでどのように行うことができますか?これは必須ではありません。
あなたの 'users.mapから' promise'を返します((ユーザー)) 'の呼び出しではなく、オブジェクトの結果です:
コア機能ではなく、約束の同期を必要とします(後の)対応するajax呼び出し。最初に配列からオブジェクトへの標準/基本 'map'を行い、*オブジェクトを生成するためにそれらをpromises/ajax呼び出しに' foreach'します。 –