我知道,当存在 CPU 密集型代码时,任何先前的 DOM 更新都不会发生。例如
function blockFor(dur){
var now = new Date().getTime();
while (new Date().getTime() < now + dur);
result.textContent = "I am done..!";
}
result.textContent = "Please remain..."; // we will never see this
blockFor(2000);
Run Code Online (Sandbox Code Playgroud)
<p id="result"></p>
Run Code Online (Sandbox Code Playgroud)
但是,如果我将 CPU 密集型代码转移到异步时间线,那么setTimeout
一切都很好,如以下代码片段所示。
function blockFor(dur){
var now = new Date().getTime();
while (new Date().getTime() < now + dur);
result.textContent = "I am done..!";
}
result.textContent = "Please remain..."; // now you see me
setTimeout(_ => blockFor(2000),15); // 15ms to be on …
Run Code Online (Sandbox Code Playgroud)我想根据元数据值过滤我网站的一些帖子。我想创建一个名为status
(like title
or date
)的特定元数据,它可以采用多个值(草稿、已发布、存档):
---
title: The title
author: Myself
date: 2016-11-29
tags: tag1, tag2
status: draft
---
Run Code Online (Sandbox Code Playgroud)
根据status
元数据的价值,该帖子是否应该发布。
我查看了 hackage 文档,但不确定要使用的功能。
你知道如何用 Hakyll 做到这一点吗?
有g = (. not)
。
函数最一般的类型g
是
g :: (Bool -> a) -> Bool -> a
Run Code Online (Sandbox Code Playgroud)
但是我不知道如何考虑构图(.)
功能。
为什么不 h :: (a -> Bool) -> a -> Bool
呢?
对象解构不是我最喜欢的东西,我经常尽量避免使用它。但是,在这种特殊情况下,我很好奇而无法忽视正在发生的事情。
现在我们可以这样做;
var o = {},
x = 1,
y = 2;
o = {x,y};
console.log(o); // <- {x: 1, y: 2}
Run Code Online (Sandbox Code Playgroud)
一切都很好;
不过,我的情况有点复杂;
var p = function(o){
o.promise = new Promise((resolve,reject) => o = {resolve,reject});
console.log(o) // -< {resolve: ƒ, reject: ƒ}
return o;
}({});
console.log(p); // -< {resolve: ƒ, reject: ƒ}
Run Code Online (Sandbox Code Playgroud)
..的promise
财产在p
哪里?所以我用经典的方式来做;
var q = function(o){
o.promise = new Promise((resolve,reject) => ( o.resolve = resolve
, o.reject = reject
));
console.log(o) // <- {promise: …
Run Code Online (Sandbox Code Playgroud) 我一直得到"错误:输入解析错误'|' "有人可以告诉我为什么吗?我已经重写了它,以确保所有正确的空格都是我的代码:
mylast :: (Eq a) => [a] -> [a]
mylast [] = []
mylast (x:xs)
| xs == [] : x
| otherwise = mylast xs
Run Code Online (Sandbox Code Playgroud) 我不得不说,数学不是我的强项.我希望得到一个不错的结果如何找到负整数的立方根,使其不返回NaN?通过使用Data.Complex包,但当我喜欢
*Main> ((-8):+0) ** (1/3)
1.0 :+ 1.732050807568877
Run Code Online (Sandbox Code Playgroud)
我希望能得到像(-2.0):+0
-2是真实部分,0是虚部的东西.然而,结果显示出一个重要的想象部分.我检查了它所声明(**)
RealFloat
的Complex
类型的实例;
x ** y = case (x,y) of
(_ , (0:+0)) -> 1 :+ 0
((0:+0), (exp_re:+_)) -> case compare exp_re 0 of
GT -> 0 :+ 0
LT -> inf :+ 0
EQ -> nan :+ nan
((re:+im), (exp_re:+_))
| (isInfinite re || isInfinite im) -> case compare exp_re 0 of
GT -> inf :+ 0
LT -> 0 :+ …
Run Code Online (Sandbox Code Playgroud) 我得到了这个代码来制作转置矩阵,但它不能100%正常工作.
type Mat a = [[a]]
transpose' :: Eq a => Mat a -> Mat a
transpose' [] = []
transpose' (h:t) = primelem (h:t):transpose' (eliminate' (h:t))
primelem :: Mat a -> [a]
primelem [] = []
primelem [[x]] = [x]
primelem ((x:xs):t) = x : primelem t
eliminate' :: Eq a => Mat a -> Mat a
eliminate' [] = []
eliminate' (h:t) = (delete (head h) h):eliminate' t
*Main> transpose' [[1,2,3],[0,4,5],[0,06]]
[[1,0,0],[2,4,6],[3,5*** Exception:(..)Non-exhaustive patterns in function primelem
Run Code Online (Sandbox Code Playgroud)
我想弄明白,但我真的不知道哪个案例丢失了.