我需要按顺序使用Axios
生成一系列请求。
let {files} = this.state, requestQueue = [];
files.forEach(file => requestQueue.push(makeRequest(file.name)));
requestQueue.reduce((curr, next) => {
return curr.then(next);
}, Promise.resolve()).then((res) => console.log(res));
函数makeRequest如下
import Axios from 'axios';
let axiosCustom = Axios.create({
baseUrl: 'localhost:8080',
headers: {
Accept: 'application/json'
}
});
const makeRequest = (title) => {
return axiosCustom({
url: '/api',
method: 'PUT',
params: {
title
}
});
};
响应只是第一个解决的问题。我该如何解决这个问题?
答案 0 :(得分:1)
这是您使用数组同步链接axios的方法。
const axios = require('axios');
function makeRequestsFromArray(arr) {
let index = 0;
function request() {
return axios.get('http://localhost:3000/api/' + index).then(() => {
index++;
if (index >= arr.length) {
return 'done'
}
return request();
});
}
return request();
}
makeRequestsFromArray([0, 1, 2]);
答案 1 :(得分:0)
我的理解是<script type="text/javascript">
alert("iooooooooooooo");
$(document).ready(function(){
$("#chartid").click(function() {
alert("i");
$.ajax({
type: "POST",
url: "WebForm1.aspx/summarydata",
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true,
cache: false,
success: function (result) {
alert(result.d);
alert("i");
},
error: function (error) {
alert(error);
}
});
});
});
</script>
需要执行一个函数。它的行为将根据该函数的返回值而改变(如果它的.then()
)。
因此,您需要更改缩减以向thenable
提供将返回.then
的方法:
next
或者
let {files} = this.state,
requestQueue = files.map(file => makeRequest(file.name));
requestQueue.reduce((curr, next) => {
return curr.then(() => next); // <- here
}, Promise.resolve())
.then((res) => console.log(res));