- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在学习 Promise。我尝试使用 setTimeOut(function(){}, 0)
进行后台处理。经过搜索,我发现这一切都会打破同步流程。在其他代码运行之前它不会运行。
下面的帖子说 setTimeOut(function, 0) 函数将同步运行。然而,我发现如果我在 promise 中使用它,情况并非如此。文章写道“setTimeout(function(){...}, 0) 只是将代码排队以在当前调用堆栈执行完毕后运行。这对于某些事情很有用。”。但是,如果编写在 Promise 内,则代码将在后台运行,而 javascript 会执行其余代码。
Is setTimeout a good solution to do async functions with javascript?
如果我在函数 setTimeOut(function(){somecode..}, 0)
中使用一些代码,在 promise 中,它会作为后台进程运行吗?我这样做是为了测试它。
如果我点击正文,我们会检查 testPromise 是否已解决。如果有,请附加消息“Msge that come after”。页面加载后,消息“Msge that comes before”就会显示。如果我刷新页面并单击正文,很快,单击和页面上消息的显示之间会出现延迟。这一定是因为 for 循环尚未完成。当我刷新后快速点击页面时。但是,如果我刷新页面并等待一段时间才能单击,则消息会消失。这一定是因为 for 循环在后台运行......仪式?我认为目前还没有这样做的实际理由。我只是想了解正在发生的事情。谢谢! Promise 的使用只是为了更好地组织异步函数吗?
let $body = $('body');
$body.prepend('<p>first</p>');
let testPromise = new Promise(function (resolve, reject) {
setTimeout(function () {
let testArray = [];
let testArray2 = [];
for (i = 0; i <= 99999999; i++) testArray.push(5);
for (j = 0; j <= 99999999; j++) testArray2.push(5);
resolve();
}, 0);
});
$body.on('click', function () {
testPromise.then(function () {
$body.append('<p>Msge that comes After</p>');
});
});
$body.append('<p>Msge that comes Before</p>');
最佳答案
您的问题已在您链接的帖子中得到解答:
setTimeout(function(){...}, 0) simply queues the code to run once the current call stack is finished executing. This can be useful for some things.
So yes, it's asynchronous in that it breaks the synchronous flow, but it's not actually going to execute concurrently/on a separate thread. If your goal is background processing, have a look at webworkers. There's also a way to use iframes for background processing.
TLDR: All backgrounded/concurrent code happens asynchronously, but not all asynchronous code is happening concurrently.
Promise 只是一种避免回调 hell 的机制。 (参见here)。
关于Javascript - 使用 setTimeOut() promise 执行 "background proccessing",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43576252/
我是 os 2 的新手,所以真的不知道从哪里开始。是否可以编写一个 WatchOs 2 应用程序,它将在后台运行并每小时唤醒一次?网上没有那么多可用的信息,但到目前为止我所看到的表明不可能编写后台应用
如何将 url 背景图像添加到渐变中并具体定位?因为梯度本身被当作图像 CSS background: linear-gradient(to bottom, #98cb01 2%,#60a822 10
我是 android 开发的新手,正在开发我的第一个 android 应用程序。我在布局的 xml 中设置了 View 的背景颜色,如下所示。 android:background="@+color/
为了尽可能简洁地使用样式,如果使用双像素密度设备(例如 iPhone 4)查看我的页面,我宁愿不使用包含的媒体查询样式表。 话虽如此,如果我只是做这样的事情就可以了吗? .icon-1 { bac
我有一个由 62 张 91 * 91 像素的图像组成的 Sprite ,这使得整个图像为 91 * 5642 像素。它们以动态网格的形式显示,该网格会根据用户/指针的移动而增长和缩小。有时,一个元素(
我一直在尝试制作一款使用 Xbox One Kinect (V2) 的 Unity 游戏。 我遵循了本教程中的说明: http://www.imaginativeuniversal.com/blog/
看来firefox会自动组合一些东西,例如它需要单独的css值,例如“border-color”,“border-width”并将它们全部转储到“border”中..这使jquery变得很痛苦因为 .
我正在构建我的第一个 Chrome 扩展程序。我浏览了 Chrome 开发人员文档,但我无法理解几个主题。 我的理解: 有两个 Action : 浏览器操作(地址栏外的按钮) 页面操作(地址栏内的按钮
我的后台监听器是 chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) 在chrome.conte
哪个更有效: 我正在尝试找出哪种提供半透明背景的方法更有效/更快: background-color: rgba(255, 255, 255, .12); 或者 background-image: u
我想要一个有 tr 作为黑色背景的表格,里面有一个白色背景的表格。
我在我的主页上放了一个背景。它可以在除 android chrome 之外的所有浏览器上正确显示。这是我的 CSS: body.path-frontpage { background-imag
我正在尝试对我的背景图像应用滤镜,但是我遇到了 CSS 属性 URL 和线性渐变的问题。我想要的背景图片 .bg-image-full { background: no-repeat center
在样式部分的 chrome 中使用谷歌开发者控制台时,它会立即为我提供“在我键入时”的背景颜色属性。几个月前,它一直在提供我更喜欢的一般属性(property)“背景”。 是否有机会自定义这些提示,或
我正在尝试实现 faux column网站上的布局。简而言之,它涉及在包含两个垂直列的 div 上平铺背景图像,使其看起来像两个列一直延伸到底部。 我的专栏如下所示: XXXX MMMM XXXX
这是一个 example .我想裁剪背景图像,然后将裁剪图像用作更大(尺寸)元素的背景。我的意思是 div 比它的背景大,我不需要重复。现在,当 background-repeat 取消注释时,元素消
CSS3 声明 background-clip 和 background-origin 似乎对背景有相同的效果。它们似乎都将背景限制在相对于 HTML 元素的某个区域,所以我想知道这两个声明在功能上是
我正在为图片库制作缩略图页面。缩略图预览作为 完成 float 具有固定的方形尺寸。 然而,缩略图本身不一定是正方形或相同大小,它们具有它们所代表的大图像的属性。 为了让它看起来不错,我想在正方形中
这个问题在这里已经有了答案: Get a CSS value with JavaScript (8 个答案) 关闭 6 年前。
你好, 就像我在标题中所说的 background-image:none; 不起作用,因为使用 css3 background-image:url('...'); 返回一个新层每次文件都是新的。我正在
我是一名优秀的程序员,十分优秀!