【发布时间】:2019-05-25 08:40:31
【问题描述】:
我有以下函数,它发出 ajax 请求或从 API 获取数据。
function getSegements(url) {
return new Promise((resolve, reject) => {
request = new XMLHttpRequest();
request.open('GET', url);
request.setRequestHeader('Content-Type', 'application/json');
// request.onload = () => resolve(request.response);
// request.onerror = () => reject(request.status);
request.onreadystatechange = function() {
if (request.readyState === 4)
{
if (request.status === 200)
{
data = JSON.parse(request.response);
console.log(data.segements);
resolve(data);
}
else
{
reject({status: request.status});
}
}
};
request.send();
});
}
调用函数:
getSegements(url).then((data) => {
//console.log(data);
//data = JSON.parse(data);
theWheel = new Winwheel({
'outerRadius' : 212,
'textFontSize' : 16,
'textOrientation' : 'horizontal',
'textAlignment' : 'outer',
'numSegments' : data.no,
'segments' : data.segements,
'animation' : // Specify the animation to use.
{
'type' : 'spinToStop',
'duration' : 5, // Duration in seconds.
'spins' : 3, // Default number of complete spins.
'callbackFinished' : alertPrize
}
});
theWheel.animation.spins = 9;
wheelSpinning = false;
})
.catch((err)=>{
console.log(err);
alert('Request failed. Returned status of ' + err.status);
});
当 WinWheel 的参数出现故障时,它会运行 catch 块。为什么会这样跑?如果 then() 将要运行或 catch(),它不取决于函数(在本例中为 getSegements)吗? p>
【问题讨论】:
标签: javascript ajax asynchronous promise