给定用于处理Promise值的命名函数
function handlePromise(data) {
// do stuff with `data`
return data
}
Run Code Online (Sandbox Code Playgroud)
a)传递命名函数handlePromise作为参考.then()
promise.then(handlePromise)
Run Code Online (Sandbox Code Playgroud)
b)使用匿名或命名函数作为参数.then()并返回指定函数,handlePromise并将Promise值作为参数传递给传递给匿名或命名函数的主体.then()
promise.then(function /*[functionName]*/(data) {return handlePromise(data)})
Run Code Online (Sandbox Code Playgroud)
问题
模式a)和b)之间是否存在差异?
如果对1.的答案是肯定的,那么在使用任何一种模式时应该考虑哪些差异?
这里必须注意的是,我在纸上手工进行了数学计算,以得出上述证明.我不确定单独使用现代计算机的介质是否会证明这些证据.
下面使用的"效率"的定义意味着在最短的时间内完成算法的离散部分或整个算法.数学上,编程上或计算上都是如此.
在进一步检查从原始集合或当前排列生成下一个词典排列的程序时,在没有递归函数调用的情况下重新阅读@chqrlie在Permutations的答案之后,我开始通过在纸上写索引来试图观察任何可用于执行特定任务的索引之间的数学关系.
我发现了几个有趣的事实,其证据如下所示.
例如,当我们写出值时
a,b,c
Run Code Online (Sandbox Code Playgroud)
要么
abc
Run Code Online (Sandbox Code Playgroud)
或者,编写代表值的索引
0,1,2
Run Code Online (Sandbox Code Playgroud)
要么
012
Run Code Online (Sandbox Code Playgroud)
既然我们知道,给定一套
abc
Run Code Online (Sandbox Code Playgroud)
我们可以通过交换集合的最后两个值或索引来生成下一个词典排列
acb
Run Code Online (Sandbox Code Playgroud)
要么
021
Run Code Online (Sandbox Code Playgroud)
我们可以忽略可能是任何类型数据的值,并专注于使用索引进行检查,因为离散数更适合关联可能的关系而不是可能无限多样化的值.
因此,用原始集的第二个词典索引
abc
Run Code Online (Sandbox Code Playgroud)
我们可以将索引的值表示为数字,并观察
0,2,1
Run Code Online (Sandbox Code Playgroud)
要么
021
Run Code Online (Sandbox Code Playgroud)
第一个索引是
012
Run Code Online (Sandbox Code Playgroud)
第二个是
021
Run Code Online (Sandbox Code Playgroud)
既然我们知道.length原始集合是3,如果我们记住.length原始值集合,我们可以删除起始
0
Run Code Online (Sandbox Code Playgroud)
在哪里将索引减少到数字
12
Run Code Online (Sandbox Code Playgroud)
和
21
Run Code Online (Sandbox Code Playgroud)
分别.其中0可以作为原始集合的索引引用0,以便在下一个操作的结果集小于原始集合时获取索引处的值.
当我们尝试绘制12和之间的潜在关系时21,我们发现了这一点
21 - 12 = 9
Run Code Online (Sandbox Code Playgroud)
当我们继续时,我们发现下一个词典索引是
102
Run Code Online (Sandbox Code Playgroud)
减去以前的索引
102 - 21 = 81
Run Code Online (Sandbox Code Playgroud)
102下一个词典排列在哪里,表示为值
bac
Run Code Online (Sandbox Code Playgroud)
它为我们提供了数字9之间的共同关系,用数字表示
9
Run Code Online (Sandbox Code Playgroud)
对于表示为数字的无限输入值集合,这种关系是明显的和可再现的.我们可以根据观察者的视角,将关系图绘制成两个斜率,当从结果排列集的第一个值开始绘制图形时,它具有倒置的顶点偏移
// graph 1
0,9,81
// graph …Run Code Online (Sandbox Code Playgroud) 说我有两个功能:
function f1() {
return new Promise<any>((resolve, reject) => {
resolve(true);
});
}
function f2() {
}
Run Code Online (Sandbox Code Playgroud)
我怎么知道是否f1会返回Promise并f2不会呢?