我当时是reading this article,并试图理解此代码
function getRandomNumber(start = 1, end = 10) {
//works when both start and end are >=1
return (parseInt(Math.random() * end) % (end - start + 1)) + start;
}
var promiseTRRARNOSG = (promiseThatResolvesRandomlyAfterRandomNumnberOfSecondsGenerator = function() {
return new Promise(function(resolve, reject) {
let randomNumberOfSeconds = getRandomNumber(2, 10);
setTimeout(function() {
let randomiseResolving = getRandomNumber(1, 10);
if (randomiseResolving > 5) {
resolve({
randomNumberOfSeconds: randomNumberOfSeconds,
randomiseResolving: randomiseResolving
});
} else {
reject({
randomNumberOfSeconds: randomNumberOfSeconds,
randomiseResolving: randomiseResolving
});
}
}, randomNumberOfSeconds * 1000);
});
});
var testProimse = promiseTRRARNOSG();
testProimse.then(function(value) {
console.log("Value when promise is resolved : ", value);
});
testProimse.catch(function(reason) {
console.log("Reason when promise is rejected : ", reason);
});
// Let us loop through and create ten different promises using the function to see some variation. Some will be resolved and some will be rejected.
for (i=1; i<=10; i++) {
let promise = promiseTRRARNOSG();
promise.then(function(value) {
console.log("Value when promise is resolved : ", value);
});
promise.catch(function(reason) {
console.log("Reason when promise is rejected : ", reason);
});
}
作者在此处做了类似var promiseTRRARNOSG = (promiseThatResolvesRandomlyAfterRandomNumnberOfSecondsGenerator = function() {
的操作,我无法理解。
有人可以帮助我理解这一行吗?我的意思是明确地指出那行代码/声明。
答案 0 :(得分:3)
promiseThatResolvesRandomlyAfterRandomNumnberOfSecondsGenerator
和promiseTRRARNOSG
都引用相同的功能。考虑以下语句:
var a = (b = function() {});
此处a
和b
引用相同的功能。这里的括号没有做任何特殊的事情。您可以通过以下方式重写语句:
var a = b = function() {};
此处的a
被定义为常规变量,而b
是全局变量。那个没用的长变量应该是一个注释。
答案 1 :(得分:2)
我认为没有必要使用promiseThatResolvesRandomlyAfterRandomNumnberOfSecondsGenerator变量。不使用。
在功能上与
相同d.getMonth()
答案 2 :(得分:2)
考虑如下匿名函数:
var promiseTRRARNOSG = function() {
但是作者为“调试目的”对该函数起了一个名字 获取在回溯中调用的方法名称 也许他/她尝试使用长方法名作为别名:
var promiseThatResolvesRandomlyAfterRandomNumnberOfSecondsGenerator = function() {
return new Promise ...
}
var promiseTRRARNOSG = promiseThatResolvesRandomlyAfterRandomNumnberOfSecondsGenerator;
但是后来改变了主意,就像这样:
var promiseTRRARNOSG = (
promiseThatResolvesRandomlyAfterRandomNumnberOfSecondsGenerator = function() {
return new Promise ...
}
);
您可能会在a wonderfully entertaining video on preventing the JavaScript garbage collector from slowing down applications中看到这样的行:
让我们调用函数promiseTRRARNOSG,它是promiseThatResolvesRandomlyAfterRandomNumnberOfSecondsGenerator的别名。
答案 3 :(得分:1)
作者所做的工作是将一个匿名函数放在一个变量内,并且该函数具有一个返回变量。因此,该函数将返回一个值,该值将成为在其中声明该函数的变量的值。因此,如果我有一个变量:
var test = function(text) {
return text + " " + text;
}
然后再添加一些这样的文本:
var words = test("words");
然后words
的值为"words words"
。这是jQuery之类的JavaScript框架中常见的概念。