小编akc*_*c42的帖子

如何在承诺中包装setTimeout

我正在尝试为返回promise的对象运行测试套件.我希望将几个动作连在一起,并在它们之间进行短暂的超时.我认为返回承诺的"然后"调用将等待承诺在触发下一个链接然后调用之前完成.

我创建了一个函数

function promiseTimeout (time) {
  return new Promise(function(resolve,reject){
    setTimeout(function(){resolve(time);},time);
  });
};
Run Code Online (Sandbox Code Playgroud)

尝试在承诺中包装setTimeout.

然后在我的测试套件中,我正在调用这样的东西......

    it('should restore state when browser back button is used',function(done){
      r.domOK().then(function(){
        xh.fire('akc-route-change','/user/4/profile/new');
      }).then(promiseTimeout(2000)).then(function(t){
        xu.fire('akc-route-change','/user/6');
      }).then(promiseTimeout(10)).then(function(t){
        expect(xu.params[0]).to.equal(6);
        history.back();
      }).then(promiseTimeout(10)).then(function(){
        expect(xu.params[0]).to.equal(4);
        done();
      });
    });
Run Code Online (Sandbox Code Playgroud)

我可以在第一个xh.fire呼叫上设置断点,在呼叫时设置第二个xu.fire呼叫,并且当从第一个断点继续到第二个断点时,预期会有两秒的间隙.

相反,它立即到达第二个断点,并且该t点的值未定义.

我究竟做错了什么?

javascript promise

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

如何在Jenkins声明性管道中从docker hub推送和拉出

我正在使用标准的"sh"命令成功构建来自我的jenkinsfile管道上的docker镜像.

我希望能够尝试从docker/hub中提取图像,如果它失败了(因为它尚未保存),请构建它并将其推送到docker hub.

显然,我需要存储docker hub的凭据并将它们提供给docker login命令.

我的问题是我很困惑.有docker管道插件,但我认为它们是用于在docker容器中运行jenkins步骤 - 而不是我想要做的事情.此外,许多示例似乎是脚本化管道而不是声明性.

在简单的"步骤"术语中,我认为我想要做的事情

agent {
    label 'pi'
}
steps {
  sh 'docker login -u my-account -p xxxx'
  sh 'docker pull my-account/image:version || (docker build -f dockerfile -t my-account/image:version && docker push my-account/image:version)'
....
}
Run Code Online (Sandbox Code Playgroud)

但我也怀疑我可能需要做类似的事情

steps {
  script {
    withDockerRegistry([credentialsId: 'something', url: 'docker.io/my-account']) {
      sh 'docker pull my-account/image:version || (docker build -f dockerfile -t my-account/image:version && docker push my-account/image:version)'
    ....
  }
}
Run Code Online (Sandbox Code Playgroud)

但我不想犯任何错误,并且除了这一点之外,还要搞一个目前工作正常的管道.

我是沿着正确的路线吗?

jenkins docker jenkins-pipeline

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

Firebug就像Android上的调试一样

我看过几篇关于在Android上远程调试javascript代码的帖子,但是他们都错过了我想要做的事情.

我有一台Nexus 7,当我离开桌面时,我希望将它用作远程开发环境.我创建了一个chroot debian发行版来运行apache和php和git(通过ssh).这个chrooted环境从chroot environement外部安装/ sdcard目录的子目录.虚拟主机的Apache文档根目录指向此目录中的目录.在离开桌面之前,我可以将最新版本推送到平板电脑.当我返回git pull时可以得到我已经做过的事情.

然后我(当离开家并且没有连接到任何网络时)可以使用Android编辑器(使用920文本编辑器)编辑代码,但是然后运行浏览器来查看我使用localhost开发的内容apache虚拟主机选择此向上并显示它.

我正在开发的应用程序不是用于Android的 - 它最终用于桌面.但我希望能够像在桌面上一样调试它.断点和单步执行是首要的事情,但我也倾向于使用firebug中的html部分在编辑之前调整我的CSS.

有没有办法让chrome开发人员工具或firebug添加为firefox加载到将在android中运行的浏览器?

javascript debugging android

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

如何模拟聚合物核心ajax,进行单元测试

我正在为我的新聚合物项目建造脚手架,并正在考虑进行单元测试.我想我将使用业力/茉莉花组合.http://japhr.blogspot.co.uk/2014/03/polymer-page-objects-and-jasmine-20.html上有一篇有趣的帖子,我对它的理解足以让我开始,但关键问题我会我必须解决并且没有找到任何标准方法来模拟ajax调用.

当我在JQuery Mobile项目中使用jasmine,standalone时,我能够直接使用Jasmine SpyOn来模拟JQuery.ajax调用.聚合物有类似的东西吗?

我遇到了一个元素,<polymer-mock-data>但没有真正的文档,所以我无法弄清楚它们是否有帮助

ajax unit-testing polymer

6
推荐指数
1
解决办法
2452
查看次数

如何在Polymer中创建单例元素

我想创建一个用户只能实例化一次的元素.

到目前为止,我能想到的最好的方法是在匿名函数中定义元素,并在发现元素已经存在时抛出错误.有没有办法让它拒绝被创造?

(function(){
  var singleton = false;
  Polymer({
   is:'my-singleton',
   created:function(){
    if(singleton) {
     throw new Error ('only one my-singleton should be created');
    }
    singleton = this;
   }
  });
})();
Run Code Online (Sandbox Code Playgroud)

polymer

5
推荐指数
1
解决办法
1805
查看次数

聚合物服务和服务工作者

我正在尝试开始调试我的Polymer应用程序.我通过复制我的想法来制作它PolymerCLI Polymer init.

我不确定什么是加载服务工作者.开发的默认设置只是console.info()调用它被禁用以进行开发.

当我Polymer serve在localhost:8080上使用我的应用程序时,我得到了console.info消息,尽管我实际上没有在哪里加载文件service-worker.js.因为应用程序要复杂得多(我试图使用http/2),我也有自己的基于节点的服务器.当我运行它然后在浏览器中获取我的应用程序时,service-worker.js不会被加载并运行.

正在Polymer serve做什么来启用它?

polymer service-worker progressive-web-apps polymer-cli

5
推荐指数
1
解决办法
2059
查看次数

如何在 docker-compose.yaml 中填充卷

我开始编写我的第一个 docker-compose.yml 文件来设置组成我的应用程序的服务组合(所有 Node-js)。其中一个服务(网络服务器 - 定制的,而不是快速的)既有它需要的大量模块,也有更多的 Bower_components。

为了提供关注点分离,以便我可以更紧密地控制版本控制,我想创建两个保存 node_modules 和 Bower_components 的命名卷,并将这些卷安装到 Web 服务器服务的相关目录中。

让我困惑的问题是如何在服务启动时填充这两个卷。我的困惑有两个原因:-

  1. docker-compose使用该-d标志与docker run使用该标志的命令的行为-d- Web 服务显然需要保持运行(如果失败,确实需要重新启动),而可能填充一个或另一个卷的容器只运行一次,因为整个应用程序是通过命令启动的docker-compose up。我能控制这个吗?
  2. 正在运行的服务和build该服务的命令。我实际上可以使用 aDockerfiles来运行npm installbower install. 特别是,如果我更改了 Web 应用程序的源代码,但模块和 Bower_Components 没有更改,那么由于缓存的结果,此构建步骤是否会立即完成?

我一直无法找到这种行为的例子,所以我很困惑如何去做。有人可以帮忙吗。

node.js docker docker-compose

5
推荐指数
1
解决办法
6511
查看次数

您可以使用 ::slotted() 伪选择器来定位特定的命名槽吗?

我正在创建一个包含默认(即未命名)插槽和一些命名插槽的自定义元素。我特别想设计一个命名插槽的内容,而不是其他任何一个。

有没有办法选择特定的命名插槽。

作为我想做的事情的一个例子,我的自定义元素包含一个对话框 - 像这样:

<dialog>
 <slot></slot> <!-- general content -->
 <div class="buttons">
  <slot name="action"></slot>
  <slot name="cancel"></slot>
 </div>
</dialog>
Run Code Online (Sandbox Code Playgroud)

我想将所有操作按钮设置为纯色,将取消按钮设置为更褪色的颜色。

css

5
推荐指数
0
解决办法
2121
查看次数

我该如何设置`<iron-overlay-backdrop>`的背景颜色

我有一个自定义元素,我想在等待ajax请求完成时使用.它由a组成<paper-spinner>,但它也有Polymer.IronOverlayBehavior.behavior.它由一个waiting属性驱动,我有一个观察者,所以当它设置时,叠加打开.

在操作上这很好.只是我的网站的背景颜色是错误的.

我正在尝试根据文档设置叠加层样式,并在模板中使用以下内容

<style >
  :host{
    --iron-overlay-backdrop-background-color: #fff;
  }
</style>
Run Code Online (Sandbox Code Playgroud)

但我得到的只是黑色的默认样式,而不是我试图设置的白色.

我应该如何设置样式,以便我得到一个半透明的白色,而不是我目前得到的半透明黑色.

polymer

2
推荐指数
1
解决办法
522
查看次数