标签: settimeout

在浏览器中呈现视图之前,Backbone.Marionette onRender回调会触发吗?

那个设定

我有Backbone.Marionette.ItemView呈现一些内容.当呈现内容时,我想应用一个jQuery插件,它将视图的一部分转换为带滚动条的容器.

滚动条完全用javascript实现,初始化时必须检查滚动容器的高度以及容器内容的高度.

如果内容高于容器,则应启用滚动条.

问题

虽然这听起来很简单,但我遇到了一个奇怪的问题:

如果我直接在onRender回调中初始化我的滚动条插件,似乎认为.scroll-container元素的高度为0,maxHeight为0.

如果我将初始化代码包装在0ms超时内,但一切都按原样运行,.scroll-container元素的height属性由jQuery正确返回,滚动条插件工作得很好.

代码

onRender: function() {
  var that = this;
  setTimeout(function() {
    that.onLayout();
    var $scrollContainer = that.$el.find('.scroll-container'), 
        scrollPane = new ScrollPane($scrollContainer, {
          maxHeightProperty: 'maxHeight',
          scrollUpButton: false,
          scrollDownButton: false
        });
  }, 0);
},
Run Code Online (Sandbox Code Playgroud)

这个问题

我假设问题发生是因为浏览器在执行onRender回调时没有完成实际呈现新插入的html.

这个假设是否正确?如果是这样,我在正常情况下使用0ms超时的解决方案是否可靠?

settimeout backbone.js marionette

29
推荐指数
1
解决办法
1万
查看次数

setTimeout只运行一次?

function slide()
{
    if($('.current').is(':last-child')){
        $('.current').removeClass('.current');
        $('#imgholder').first().addClass('.current');
        $('#imgholder').animate({left: '3920px'});
    }
    else{
        $nxt=$(".current");
        $(".current").removeClass("current");
        $nxt.next().addClass("current");
        $('#imgholder').animate({left: '-=980'},{duration: 'slow', easing: 'easeOutBounce' });
        }
}
var loop_handle= setTimeout("slide()",'3000');
Run Code Online (Sandbox Code Playgroud)

我已将此代码放在标题部分中,而setTimeout只运行一次

请帮助查看 http://www.beta.storeji.in/

javascript settimeout

28
推荐指数
5
解决办法
5万
查看次数

代码执行中的同步延迟

我有一个代码,需要在延迟说5000毫秒后执行.目前我使用的是setTimeout但它是异步的,我希望执行等待它的返回.我尝试过使用以下内容:

function pauseComp(ms) 
 {
     var curr = new Date().getTime();
     ms += curr;
     while (curr   < ms) {
         curr = new Date().getTime();
     }
 } 
Run Code Online (Sandbox Code Playgroud)

但我想延迟的代码是使用raphaeljs绘制一些对象,并且显示器根本不是平滑的.我正在尝试使用doTimeout插件.我只需要延迟一次,因为延迟和要延迟的代码都在循环中.我没有要求身份证,所以我没有使用它.例如:

for(i; i<5; i++){ $.doTimeout(5000,function(){
         alert('hi');  return false;}, true);}
Run Code Online (Sandbox Code Playgroud)

这等待5秒钟,然后给出第一个Hi,然后连续循环迭代在第一个之后立即显示警报.我想要它做的是等待5秒再次提醒警报等待然后提供警报等等.

任何提示/建议表示赞赏!

javascript jquery settimeout

27
推荐指数
5
解决办法
5万
查看次数

javascript中的setTimeout与angularjs中的$ timeout服务之间的差异

我是角度框架的新手.这是我的场景,我想在一段时间后更改我的$ scope.variable,所以我使用了javascript setTimeout方法.

$scope.variable = 'Previous';

setTimeout(function(){
  $scope.variable='NEXT';
},3000);
Run Code Online (Sandbox Code Playgroud)

这段代码对我不起作用.我曾经$apply()使这个代码工作.

后来我才知道angular本身有一个$ timeout服务,可以做同样的工作.

$scope.variable = 'Previous';

$timeout(function () {
  $scope.variable = 'NEXT';
}, 2000);
Run Code Online (Sandbox Code Playgroud)

我怎样才能比较$timeoutjavascript 的服务性能setTimeout

我们为什么要用$timeout而不是setTimeout??

请给我一些使用它的例子和理由,它显示了性能.

谢谢 :)

javascript settimeout angularjs angular-services

27
推荐指数
2
解决办法
4万
查看次数

是否在Javascript中按顺序执行相同的超时?

假设我这样做

setTimeout(foo, 0);

...

setTimeout(bar, 0);
Run Code Online (Sandbox Code Playgroud)

我可以确定foo会在开始执行之前吗?如果不是0,我会使用1,10或100的超时来表示条形码?

简单的实验表明,在超时值相等的情况下,超时目标的执行顺序与setTimeouts本身相同,但依赖此行为是否安全?

javascript operator-precedence settimeout

26
推荐指数
4
解决办法
2945
查看次数

可以在一个页面中同时设置多少个javascript setTimeout/setInterval调用?

我必须使用至少2个setTimeouts和1个setInterval.这是否依赖于所使用的浏览器或javascript引擎?

javascript settimeout

26
推荐指数
4
解决办法
4万
查看次数

是否有类似于PHP的setTimeout()(JavaScript)的函数?

排序的问题说,这一切-有哪个不一样的功能的JavaScript函数的setTimeout()PHP?我搜索过php.net,我似乎找不到任何...

javascript php settimeout

26
推荐指数
5
解决办法
6万
查看次数

如何在"X"秒后进行jquery函数调用

我有一个jquery函数,我需要在Iframe中打开网站后调用它.

我想在iframe中打开一个weblink,打开它后我需要调用下面的函数.那我该怎么做?

这是我的功能:

<script type="text/javascript">
       $(document).ready(function(){
           $("#<%=Button1.ClientID%>").click(function (event) {

            $('#<%=TextBox1.ClientID%>').change(function () {
                $('#various3').attr('href', $(this).val());
            });
            $("#<%=Button2.ClientID%>").click();
        });
      })
    function showStickySuccessToast() {
        $().toastmessage('showToast', {
            text: 'Finished Processing!',
            sticky: false,
            position: 'middle-center',
            type: 'success',
            closeText: '',
            close: function () {

            }
        });
    }

    </script>
Run Code Online (Sandbox Code Playgroud)

这是我在IFrame中打开链接的按钮:

<a id="various3" href="#"><asp:Button ID="Button1" 
runat="server" Text="Button" OnClientClick="Button2_Click"/></a>
Run Code Online (Sandbox Code Playgroud)

实际上这是我所拥有的简单页面:

在此输入图像描述

这就是信息 在此输入图像描述

jquery function call settimeout

26
推荐指数
1
解决办法
9万
查看次数

useRef 的类型(如果与 setInterval、react-typescript 一起使用)

我正在 next.js 应用程序中制作一个简单的动画。

let flipInterval = useRef();



const startAnimation = () => {
    flipInterval.current = setInterval(() => {
      setIsFlipping((prevFlipping) => !prevFlipping);
    }, 10000);
  };
Run Code Online (Sandbox Code Playgroud)

因为flipInterval.current我收到“类型‘超时’不能分配给类型‘未定义’”。所以我检查了如何使用超时类型,我看到人们正在使用,但那不起作用。

 let flipInterval = useRef<typeof window.settimeout>();
Run Code Online (Sandbox Code Playgroud)

我也通过了号码useRef<number>()我收到“类型‘超时’不能分配给类型‘数字’”

这也不起作用

  let flipInterval = useRef<typeof window.setInterval>();
Run Code Online (Sandbox Code Playgroud)

animation settimeout typescript reactjs next.js

26
推荐指数
3
解决办法
2万
查看次数

如何使用"setTimeout"来调用对象本身

为什么我不能setTimeout在javascript对象中使用?

Message = function () {

    ...
    ...        

    this.messageFactory = ...
    this.feedbackTag = document.getElementById('feedbackMessages');

    this.addInfo = function (message) {
        var info = this.messageFactory.createInfo(message); // create a div
        this.feedbackTag.appendChild(info);

        setTimeout('this.feedbackTag.removeChild(info)', 5000);
        // why in here, it complain this.feedbacktag is undefined ??????

    };
}
Run Code Online (Sandbox Code Playgroud)

感谢Steve的解决方案,现在如果代码如下所示它将起作用...因为之前'this'实际指向setTimeOut中的函数,它不能重新发送消息.

Message = function () {

    ...
    ...        

    this.messageFactory = ...
    this.feedbackTag = document.getElementById('feedbackMessages');

    this.addInfo = function (message) {
        var info = this.messageFactory.createInfo(message); // create a div
        this.feedbackTag.appendChild(info);

        var _this = this;
        setTimeout(function() { _this.feedbackTag.removeChild(info); }, …
Run Code Online (Sandbox Code Playgroud)

javascript settimeout

24
推荐指数
2
解决办法
4万
查看次数