Vue/Bluebird: 那么回调不会 运行
Vue/Bluebird: then callback doesn't run
this.getStationsAsync()
的 then() 永远不会运行。 catch()
也没有,所以可能没有任何东西被拒绝。 Promise.promisify(this.getStations)
有什么问题吗?
我也在 created()
挂钩中尝试了 this.getStationsAsync = Promise.promisify(this.getStations)
。我没有收到任何错误,但也没有收到任何 console.logs()
表明 then()
已执行。
import Vue from 'vue'
import axios from 'axios'
import Promise from 'bluebird'
methods:{
createStationMarkers (selectedNetworkMarker) {
this.selectedNetwork = selectedNetworkMarker
this.hideNetworkMarkers()
debugger
this.getStationsAsync()
.then(() => {
debugger
console.log('inside then')
this.addStationMarkers()
this.test = true
})
.catch(error => {
console.log(error)
})
}
},
getStations () {
axios
.get('/api/network/' + this.selectedNetwork.id)
.then(res => {
for (let station of res.data.stations) {
this.stations.push(station)
}
return res.data.stations
})
.catch(error => {
console.log(error)
})
}
}
computed: {
getStationsAsync () {
return Promise.promisify(this.getStations)
}
}
你需要return axios 调用的结果,这是一个承诺。
getStations () {
return axios
.get('/api/network/' + this.selectedNetwork.id)
.then(res => {
for (let station of res.data.stations) {
this.stations.push(station)
}
return res.data.stations
})
.catch(error => {
console.log(error)
})
}
}
蓝鸟是不必要的。只需从 createStationMarkers
.
调用 getStations
this.getStationsAsync()
的 then() 永远不会运行。 catch()
也没有,所以可能没有任何东西被拒绝。 Promise.promisify(this.getStations)
有什么问题吗?
我也在 created()
挂钩中尝试了 this.getStationsAsync = Promise.promisify(this.getStations)
。我没有收到任何错误,但也没有收到任何 console.logs()
表明 then()
已执行。
import Vue from 'vue'
import axios from 'axios'
import Promise from 'bluebird'
methods:{
createStationMarkers (selectedNetworkMarker) {
this.selectedNetwork = selectedNetworkMarker
this.hideNetworkMarkers()
debugger
this.getStationsAsync()
.then(() => {
debugger
console.log('inside then')
this.addStationMarkers()
this.test = true
})
.catch(error => {
console.log(error)
})
}
},
getStations () {
axios
.get('/api/network/' + this.selectedNetwork.id)
.then(res => {
for (let station of res.data.stations) {
this.stations.push(station)
}
return res.data.stations
})
.catch(error => {
console.log(error)
})
}
}
computed: {
getStationsAsync () {
return Promise.promisify(this.getStations)
}
}
你需要return axios 调用的结果,这是一个承诺。
getStations () {
return axios
.get('/api/network/' + this.selectedNetwork.id)
.then(res => {
for (let station of res.data.stations) {
this.stations.push(station)
}
return res.data.stations
})
.catch(error => {
console.log(error)
})
}
}
蓝鸟是不必要的。只需从 createStationMarkers
.
getStations