promise 遇到的问题

196 阅读1分钟

在写程序的时候,遇到了这么一个问题。

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还未生成的原因吧;