没有在promise方法中获得3500条记录的api响应。如果我使用setTimeout()调用api,则它可以正常工作并获取所有数据。
请在下面找到示例代码(仅在异步方法中调用apiCall)
let data = await apiCall();
function apiCall(){
return new Promise((resolve,reject)=>{
let options = {method:'get'}
fetch('http://example.com/getData',options).then(data => {
resolve(data);
});
});
}
答案 0 :(得分:1)
let data = await apiCall();
function apiCall(){
let options = {method:'get'};
return fetch('http://example.com/getData', options);
}
尝试这样,它应该可以正常工作。
答案 1 :(得分:0)
如果您不在let data = await apiCall();
函数内部调用,则此行async
无效,因为await
仅在async
函数内部有效。
使用async/await
的正确语法是:
async function myFunc() {
let result = await getSomething()
...
}
另外fetch
API也支持Promise
,因此在您的代码中您可以执行以下操作:
// note async keyword
async function apiCall(){
let options = {method:'get'}
try {
let response = await fetch('http://example.com/getData',options) // response is also a promise so
let data = await response.json(); // data contains the result
console.log(data);
} catch (err) {
console.error(err)
}
}
假设您在return data
函数中进行了apiCall
,则结果也将由promise
函数包装在async
中。因此,您必须:
apiCall().then(result => console.log(result))
。同样,async/await
的使用率高于^