小编Pin*_*nal的帖子

ECMAScript Promise.all方法适用于jQuery.Deferred.为什么?

我正在研究JavaScript中的Promises.我很有兴趣将ECMAScript Promises与其他实现结合起来,例如jQuery $.Deferred.当Promises.alljQuery工作正常时,我感到很惊讶$.Deferred.我试图在jQuery源代码和CommonJS Promises/A规范中找到答案,但我仍然误解了为什么这段代码按照我的预期工作(console.log10秒后做,不是5秒):

var promise = new Promise(function (resolve, reject) {
    setTimeout(function () { 
        resolve();//resolve first promise after 5 secs
        console.log('Promise resolved');
    }, 5000);
});

var deferred = $.Deferred();
setTimeout(function () { 
    deferred.resolve();//resolve after 10 seconds
    console.log('Deferred resolved');
}, 10000);

Promise.all([promise,deferred]).then(function () {
    console.log('All is done');//log after 10 seconds
});
Run Code Online (Sandbox Code Playgroud)

你有什么想法?

Promise.all必须依靠某些领域或方法$.Deferred来理解是否解决了.那个方法/领域是什么?

javascript jquery promise jquery-deferred es6-promise

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

使用 websocket javascript 客户端发送文件

我正在尝试使用 websocket 连接将文件发送到我的服务器:我已经使用 java Spring 实现了 websocket 服务器端,每次我使用“blob”从客户端发送二进制消息时,出于某种原因,客户端在 javaScript 中或“arraybuffer。服务器将消息识别为文本消息而不是二进制消息。我在这里遗漏了什么?

客户端

 <!DOCTYPE HTML>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
            <title>Chat</title>
        </head>
    <body>
        <h2>File Upload</h2>
            Select file
        <input type="file" id="filename" />
        <br><br><br>
        <input type="button" value="Connect" onclick="WebSocketTest()" />
        <br><br><br>
        <input type="button" value="Upload" onclick="sendFile()" />

    <script>
    "use strict"
    var ws;
    function WebSocketTest()
    {
      if ("WebSocket" in window)
      {
         console.log("WebSocket is supported by your Browser!");
         // Let us open a web socket
         ws = new WebSocket("ws://xx.xx.xx.xx:yyyy/service/audioHandler");
         ws.onopen = function()
         {
            // Web Socket …
Run Code Online (Sandbox Code Playgroud)

javascript java spring websocket

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

克隆音频源而无需再次下载

我正在使用javascript在浏览器中创建钢琴.为了让我同时多次播放相同的键,而不是只播放Audio对象,我克隆它并播放克隆,否则我必须等待音频完成或重新启动它,我不知道我想要.

我做过这样的事情:

var audioSrc = new Audio('path/');
window.onkeypress = function(event) {
    var currentAudioSrc = audioSrc.cloneNode();
    currentAudioSrc.play();
}
Run Code Online (Sandbox Code Playgroud)

问题是,我正在检查chrome的检查器,我注意到每次克隆对象时,浏览器都会再次下载它

在此输入图像描述

我检查了一些想要实现类似功能的人,并注意到他们中的大多数都遇到了同样的问题,他们重新下载了文件.我发现可以同时多次播放相同音频源的唯一示例是SoundJs http://www.createjs.com/SoundJS

我尝试检查源可能但无法弄清楚它是如何完成的.任何的想法?


javascript audio html5

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

Appium无法在iOS 8.4上滚动

我尝试使用以下代码在Appium上成功滚动:

// java
JavascriptExecutor js = (JavascriptExecutor) driver;
HashMap<String, String> scrollObject = new HashMap<String, String>();
scrollObject.put("direction", "down");
scrollObject.put("element", ((RemoteWebElement) element).getId());
js.executeScript("mobile: scroll", scrollObject);
Run Code Online (Sandbox Code Playgroud)

但是,由于已知的appium问题,在尝试滚动超出UITableView底部时出现javascript错误:https: //github.com/appium/appium/issues/4836

这个问题与appium的isDisplayed()方法一起总是返回true(无论单元格是否在屏幕上可见),而appium无法点击不可见的单元格,意味着appium无法滚动和选择对象.

有没有人找到解决这个问题的方法?

java testing automation appium

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

在 React 中从 e.currentTarget 向上遍历 DOM 树时,parentNode 为 null

我们正在使用 React 并且有类似这样的代码:

const isDescendant = (predicateFn, child) => {
  let node = child.parentNode;

  while (node !== null) {
    if (predicateFn(node)) return true;
    node = node.parentNode;
  }

  return false;
}

componentDidMount() {
  const nodeIsModal = () => // ...

  const onBodyClick = (e) => {
    if (isDescendant(nodeIsModal, e.currentTarget)) {
      this.tryToClose();
    }
  };
  document.addEventListener('click', onBodyClick);
}
Run Code Online (Sandbox Code Playgroud)

这似乎可行,但是当我们单击DOM 中的某些isDescendant元素并开始沿着 DOM 树向上行走时,e.currentTarget突然停止,因为node.parentNodereturns null。问题是,当单击“检查元素”时,我们清楚地看到该节点位于 DOM 树的中间,并且显然有一个父节点。看起来返回的节点(或其祖先)e.currentTarget以某种方式与真实的 DOM 树分离。

React 是否在这里做了一些导致这种行为的事情,或者我们是否在以其他方式欺骗自己?

javascript dom reactjs

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

当我通过索引获取数组元素值时,在javascript中调用什么内部方法?

我有一些wtfjs代码:

var a = [,];
alert(a.indexOf(a[0]));
Run Code Online (Sandbox Code Playgroud)

a.indexOf(a[0])回报-1.这个例子的要点是uninitializedundefined值之间的区别:

a 包含一个未初始化的元素.

a[0]回来undefined.

a不包含undefined值.所以a.indexOf(a[0]) === -1true.

但在哪里我可以找到解释为什么a[0]回归undefined?调用什么内部方法?

PS Undefined是javascript原始类型.Uninitialized表示没有任何javascript类型的值,但javascript中没有这样的原始类型.

javascript

4
推荐指数
1
解决办法
128
查看次数

更改fullCalendar的slotDuration

我正在使用ui-calendar(女巫基于fullCalendar),默认持卡时间= '00:30:00'.我想把它改成'00:15:00'.

我的配置对象:

  /* config object */
  $scope.uiConfig = {
    calendar:{
      height: 450,
      editable: true,
      duration: '00:15:00',
      slotDuration: '00:15:00',
      header:{
        left: 'title',
        center: '',
        right: 'today prev,next'
      },
      eventClick: $scope.alertOnEventClick,
      eventDrop: $scope.alertOnDrop,
      eventResize: $scope.alertOnResize
    }
  };
Run Code Online (Sandbox Code Playgroud)

根据http://fullcalendar.io/docs/agenda/slotDuration/.但这没有帮助:(

fullcalendar angularjs angular-ui

3
推荐指数
1
解决办法
3256
查看次数

为什么我的简单angularjs不起作用?

我有一个简单的angularjs测试实例.它使用全局但警报标签未运行.这是codechool的第一个例子.

为什么不运行?

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script src="Scripts/angular.js"></script>
</head>
<body ng-controller="StoreController">


    <script type="text/javascript">
        function StoreController() {

            alert("hello");
        }

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

javascript angularjs

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

使用CSS自动拉伸列表元素

我有一个ul元素可变的li元素.我希望最后一个li元素始终填充第一行的剩余空间,或者,如果小于预定义的最小值,我希望它移动到一个新行.

图表展示:

在此输入图像描述

我已经尝试过浮动左,浮右,显示块,内联,内联块,表格,最小宽度等各种组合.我无法使其工作.如果有必要,我愿意做javascript路线,但首先我想看看是否有人能在我的CSS中找到它

html css html-lists

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

使用jQuery上传跨域文件

我的代码适用于同一个域.
但是当我在跨域使用 dataType:'jsonp'crossDomain:true
代码示例时 -

var fa = new FormData();

fa.append("upload_pass", document.getElementById("upload_pass").files['0']);

$.ajax({    
    url: 'http://xxx.xx.xx.xx/upload.php',
    data: fa,
    contentType: false,
    processData: false,
    dataType: 'jsonp',
    crossDomain: true,
    type: 'GET',
    success: function(data) {
        alert(data);
    }
});
Run Code Online (Sandbox Code Playgroud)

是否有任何概念性理解差距或编码问题.
请建议.

javascript ajax jquery cross-domain

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

如何将getElementsByClassName与jQuery选择器一起使用:not()选择器

我正在尝试选择并单击不包含类".bar"的类".foo"的元素.

我想使用这样的代码,但它不起作用:

var inputs = document.getElementsByClassName('foo:not(bar)'); 
for(var i=0; i<inputs.length;i++) { 
    inputs[i].click(); 
}
Run Code Online (Sandbox Code Playgroud)

感谢帮助!

javascript jquery getelementsbyclassname

0
推荐指数
1
解决办法
7336
查看次数

在Array中搜索值

我需要检查数组中是否包含某些特定值.我可以这样:

if($.inArray('Z', arr) != -1){
  ..
}else if($.inArray('A', arr) != -1){
  ..
}else if($.inArray('G', arr) != -1){
  ..
}else if($.inArray('T', arr) != -1){
......
Run Code Online (Sandbox Code Playgroud)

或者更短:

if($.inArray('Z', arr) != -1) || ($.inArray('A', arr) != -1) || ($.inArray('G', arr) != -1) ||($.inArray('T', arr) != -1) ... {
Run Code Online (Sandbox Code Playgroud)

但是我的代码有更短的版本吗?谢谢

javascript jquery

0
推荐指数
1
解决办法
56
查看次数