私はループを介してユーザーが入力した距離からこの距離をチェックするためにgoogles web apiを使用して、私のコードを介してid変数を渡して、私がアクセスできるようにする必要がある場所に渡し、私がapiから得た答えに応じて印刷できるようにします。コールバックを介して変数を渡すことはできませんまた、私は約束を置くことはできません
私のコードは次のようである:
checkDist(data) {
this.setState({
searching: true,
});
var self = this;
data.forEach(item => {
console.log('check');
self.getDist(item.postcode, item.id);
});
}
updateSearchResults(dist) {
var output = [];
var self = this;
console.log('Here we will search the db using user data for suitable jobs');
console.log("distFromLoc in Update: " + this.state.distFromLoc);
window.setTimeout(function() {
self.setState({
dataToShow: output,
searching: false,
current: 1,
});
const dataLength = self.state.dataToShow.length
self.setState({
amountOfJobs: dataLength
})}, 10000)
}
getDist(dest, id){
var self = this;
const wrappedCallback = (id) => (...args) => this.callback(...args);
var origin = this.state.location,
destination = dest,
service = new window.google.maps.DistanceMatrixService();
service.getDistanceMatrix(
{
origins: [origin],
destinations: [destination],
travelMode: window.google.maps.TravelMode.DRIVING,
avoidHighways: false,
avoidTolls: false,
unitSystem: window.google.maps.UnitSystem.IMPERIAL
},
wrappedCallback,
);
}
callback(response, status, id) {
const self = this;
console.log("id in callback: " + id);
if(status === "OK") {
console.log(response);
var dest = response.destinationAddresses[0];
if (response.rows[0].elements[0].status === "ZERO_RESULTS"){
} else if (response.rows[0].elements[0].status === "OK"){
var dist = response.rows[0].elements[0].distance.text;
this.setState({
distFromLoc: dist
}, function() {
self.updateSearchResults(dist);
})
}
} else {
alert("Error: " + status);
}
}
IDはconst wrappedCallback = (id) => (...args) => this.callback(...args);
からconst wrappedCallback = (...args) => this.callback(...args);
を変更することにより、最終関数に渡されますが、それはもはや応答やステータスをログコンソールはありませんので、これは、最終的な機能を破りますconstが最初の方法であったが、最初の方法はidが何であるかを知らないときに行ったことです。
ID、レスポンス、ステータスがすべて意味するものをすべて知ってもらう方法はありますか?
'(応答、ステータス)=>コールバック(応答、状態、ID)'あなたはそれ渡すようにあなたは、インラインfatarrowにwrappedCallback' 'から渡すコールバックを変更することができますその引数を受け入れるコールバックは、余分な引数で関数を呼び出します。 –
病気を試してみてくださいありがとう。だから私はどこで私はラップコールコールバックを変更し、代わりにこれを追加する必要がありますか? –
私は完全な説明で答えを加えました。私はそれが助けて欲しい –