taskList.push(
const data = {
url: 'http://${requestUrl}?${argsString}',
headers: {
'Content-Type': 'application/octet-stream',
Authorization: signature //,
//'Content-Length': buffer.length
},
method: 'POST',
data: buffer
}
return axios(data)
)
try {
const data = await Promise.all(taskList)
const res = data.map(d => d.data)
console.log(res)
//ctx.state.data = res
} catch (e) {
console.log(e)
throw e
}
如何不等待所有请求完成,因为所有完成都需要太长时间。如果有任何请求完成,我将其打印出来,这对用户来说将非常快。
答案 0 :(得分:2)
如果每个响应都应在完成后立即记录下来,则应为:
const responses = await Promise.all(taskList.map(async task => {
const { data } = await task;
console.log(data);
return data;
}));
答案 1 :(得分:1)
要运行每个Promise,只需将一个<DataTemplate x:Key="LoginTemplate">
<views:LoginView/>
</DataTemplate>
<DataTemplate x:Key="ChatTemplate">
<views:ChatView/>
</DataTemplate>
<Style x:Key="ChatContentStyle" TargetType="ContentControl">
<Setter Property="ContentTemplate" Value="{StaticResource LoginTemplate}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding UserMode}" Value="{x:Static enums:UserModes.Chat}">
<Setter Property="ContentTemplate" Value="{StaticResource ChatTemplate}"/>
</DataTrigger>
</Style.Triggers>
</Style>
添加到每个.then()
或Promise.all
中,但是之后将无法.map
数据:
try {
const data = Promise.all(taskList).then(() => console.log('finished'));
// this will not wait to run, so data will be probably undefined
const res = data.map(d => d.data)
...
所以我建议遵循模式并等待它们完成。
如果花费的时间太长,则可能的话,您应该尝试提高后端的响应性能。