错误在第十一章的第一节,这是中文版,写的是1000毫秒。
英文版同样有这个错误:
错误在于他说大约只花1000ms,其实大约花2000ms。
原代码
function double(value, success, failure) {
setTimeout(() => {
try {
if (typeof value !== 'number') {
throw `Must provide number`;
}
success(2 * value);
} catch (e) {
failure(e);
}
}, 1000);
}
const successCallback = (x) => {
double(x, (y) => console.log(`Success:${y}`));
};
const failureCallback = (e) => console.log(`Failure:${e}`);
double(3, successCallback, failureCallback);
为了检验它确实花了2000ms,我需要给这个异步函数添加计时。首先在开头加了一个console.time('用时');
用来记录开始时间,接着在第二次进入try
后(console.endTime('用时')
)结束计时。
console.time("用时");
let i=1;
function double(value, success, failure) {
setTimeout(() => {
try {
if (typeof value !== 'number') {
throw `Must provide number`;
}
if(i>1){
console.timeEnd("用时");
}
success(2 * value);
i++;
} catch (e) {
failure(e);
}
}, 1000);
}
const successCallback = (x) => {
double(x, (y) => console.log(`Success:${y}`));
};
const failureCallback = (e) => console.log(`Failure:${e}`);
double(3, successCallback, failureCallback);
最后,贴上运行结果的截图。大约花了2000ms。
这本书有错误其实在所难免,毕竟1000多页这么厚。
但我不能忍的是无论是原作还是翻译,都把文字写的晦涩难懂,举个例子:“同时也就不可能在没有声明的情况下声明它”,这句话我至今也没有搞懂意思!!