在写程序的时候,遇到了这么一个问题。
index.vue
import payment from "../payment.js"
payment.pay().then(res).catch(err)
payment.js
pay(){
if(){
reuturn payment() // 1}else{
$get().then(
reuturn payment() // 2
).catch()
}
}
payment(){
return new Promise((resolve, reject)=>{
if(){
resolve()
}else{
reject()
}
})module.exports = {
pay
}
当调用payment.js中标1的 回调payment()时成功,当调用2时会报错then undefined;
经过测试后发现
promise.js
pay(){
if(){
reuturn payment() // 1
}else{
$get().then(
setTimeout(function() {
reuturn payment() // 3
}, 1000);
).catch()
}
}
payment(){
return new Promise((resolve, reject)=>{
if(){
resolve()
}else{
reject()
}
})module.exports = {
pay
}
或者
payment.js
pay(){
if(){
reuturn payment() // 1
}else{
return new Promise((resolve,reject)=>{
$get().then(
payment().then(
resolve() //4).catch(
reject())).catch(
reject())
})
}}
payment(){
return new Promise((resolve, reject)=>{
if(){
resolve()
}else{
reject()
}
})
}
module.exports = {
pay
}
这两种情况下的回调可以用,所以应该是异步调用导致的第一种情况,then还未生成的原因吧;