如何在没有回调的情况下顺序调用axios函数
How to call sequentially axios functions without callback
我需要制作函数 syncCalltest 来顺序调用 axios 函数。
有什么方法可以在不修改 getPost1 getPost2 和 getPost3 的情况下按顺序使 syncCallTest 函数 运行?
function syncCallTest() {
conole.log('before getPost');
getPost();
conole.log('after getPost and before getPost2');
getPost2();
conole.log('after getPost2 and before getPost3');
getPost3();
conole.log('after getPost3');
}
function getPost() {
axios get("http://example.com/posts/12345/")
.then(reponse => {
console.log(response);
})
.catch(error => {
console.error(error);
})
}
function getPost2() {
axios get("http://example.com/posts/12345/")
.then(reponse => {
console.log(response);
})
.catch(error => {
console.error(error);
})
}
function getPost3() {
axios get("http://example.com/posts/12345/")
.then(reponse => {
console.log(response);
})
.catch(error => {
console.error(error);
})
}
由于你的调用是 Promise,我认为你不能使 then 同步。
不过好像你需要的是按顺序调用,那就简单了;)
更改 postX 方法,使其 return 他们的 promise 然后级联 promise
function syncCallTest() {
getPost()
.then(getPost2)
.then(getPost3);
}
function getPost() {
return axios.get("http://example.com/posts/12345/")
.then(reponse => {
console.log(response);
})
.catch(error => {
console.error(error);
})
}
function getPost2() {
return axios.get("http://example.com/posts/12345/")
.then(reponse => {
console.log(response);
})
.catch(error => {
console.error(error);
})
}
function getPost3() {
return axios.get("http://example.com/posts/12345/")
.then(reponse => {
console.log(response);
})
.catch(error => {
console.error(error);
})
}
我需要制作函数 syncCalltest 来顺序调用 axios 函数。
有什么方法可以在不修改 getPost1 getPost2 和 getPost3 的情况下按顺序使 syncCallTest 函数 运行?
function syncCallTest() {
conole.log('before getPost');
getPost();
conole.log('after getPost and before getPost2');
getPost2();
conole.log('after getPost2 and before getPost3');
getPost3();
conole.log('after getPost3');
}
function getPost() {
axios get("http://example.com/posts/12345/")
.then(reponse => {
console.log(response);
})
.catch(error => {
console.error(error);
})
}
function getPost2() {
axios get("http://example.com/posts/12345/")
.then(reponse => {
console.log(response);
})
.catch(error => {
console.error(error);
})
}
function getPost3() {
axios get("http://example.com/posts/12345/")
.then(reponse => {
console.log(response);
})
.catch(error => {
console.error(error);
})
}
由于你的调用是 Promise,我认为你不能使 then 同步。
不过好像你需要的是按顺序调用,那就简单了;)
更改 postX 方法,使其 return 他们的 promise 然后级联 promise
function syncCallTest() {
getPost()
.then(getPost2)
.then(getPost3);
}
function getPost() {
return axios.get("http://example.com/posts/12345/")
.then(reponse => {
console.log(response);
})
.catch(error => {
console.error(error);
})
}
function getPost2() {
return axios.get("http://example.com/posts/12345/")
.then(reponse => {
console.log(response);
})
.catch(error => {
console.error(error);
})
}
function getPost3() {
return axios.get("http://example.com/posts/12345/")
.then(reponse => {
console.log(response);
})
.catch(error => {
console.error(error);
})
}