【发布时间】:2017-09-13 19:25:52
【问题描述】:
谁能解释一下为什么返回 Axios 承诺允许进一步链接,但在应用 then()/catch() 方法后返回不允许?
例子:
const url = 'https://58f58f38c9deb71200ceece2.mockapi.io/Mapss'
function createRequest1() {
const request = axios.get(url)
request
.then(result => console.log('(1) Inside result:', result))
.catch(error => console.error('(1) Inside error:', error))
return request
}
function createRequest2() {
const request = axios.get(url)
return request
.then(result => console.log('(2) Inside result:', result))
.catch(error => console.error('(2) Inside error:', error))
}
createRequest1()
.then(result => console.log('(1) Outside result:', result))
.catch(error => console.error('(1) Outside error:', error))
createRequest2()
.then(result => console.log('(2) Outside result:', result))
.catch(error => console.error('(2) Outside error:', error))
<script src="https://unpkg.com/axios@0.16.1/dist/axios.min.js"></script>
https://jsfiddle.net/nandastone/81zdvodv/1/
我知道 Promise 方法应该返回一个要被链接的值,但是为什么这两个返回方法有区别呢?
【问题讨论】:
-
第二个例子返回链的“结束”,第一个例子返回
requestpromise -
真正的问题是,您没有在
.then/.catch中返回任何内容 - 这导致 Promise 将被解析为undefined -
对不起,我的错误,他们返回了调用
console.log的结果 - 这是undefined(我偷看了小提琴 - 这不是委婉说法)
标签: javascript promise axios