小编Pip*_*ipo的帖子

Promise.resolve vs new Promise(解决)

我正在使用蓝鸟,我看到两种方法将同步函数解析为Promise,但我没有得到两种方式之间的差异.看起来堆栈跟踪有点不同,所以它们不仅仅是一个alias,对吧?

那么首选方式是什么?

方式A.

function someFunction(someObject) {
  return new Promise(function(resolve) {
    someObject.resolved = true;
    resolve(someObject);
  });
}
Run Code Online (Sandbox Code Playgroud)

方式B.

function someFunction(someObject) {
  someObject.resolved = true;
  return Promise.resolve(someObject);
}
Run Code Online (Sandbox Code Playgroud)

javascript promise bluebird

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

AngularJS:点击"一个好习惯"吗?为什么AngularJS中没有ng- {event}?

我刚刚开始学习AngularJS并且与AngularJS的一些概念斗争.如果有人可以向我解释一些问题,那就太好了......

  1. 据我所知,这ng-click在技​​术上并不相同onclick(见这里),但两者都放在标记中.我认为这将是一个"不好的做法"?如果大多数人说这是"坏",为什么这是AngularJS的核心概念之一?我认为最好从JavaScript中选择DOM元素,而不是在标记中放置逻辑.

  2. 如果ng-click是对AngularJS中的点击事件做出反应的正确方法,我应该如何处理其他DOM事件?我看到有其他几个指令ng-mouseover,但并非所有DOM事件都有一个AngularJS等价物.我如何处理AngularJS中的'drop'事件(因此采用AngularJS方式 - 不是正常方式)?要明确:我想将文件拖到我的webapp中.

非常感谢Pipo

dom-events angularjs

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

getGserMedia()shim for PhoneGap/Cordova?

我用Cordova创建了一个Web应用程序,我需要在后台显示一个实时的摄像头流.似乎Cordova的Camera/Videos API只是打开原生相机/视频应用而不是返回实时相机数据.我真正需要的东西getUserMedia()只能在Opera和Chrome上使用(2012年6月).

getUserMedia()在Cordova或任何表现相似的插件中是否有垫片?

camera stream cordova

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

RxJS:如何不订阅初始值和/或未定义?

作为RxJS的新手我经常创造一个在未来拥有价值的主题,但最初是undefined.这可能是undefined第一次.我目前使用a filter跳过undefined值,但这是非常麻烦的,因为我在任何地方都这样做,因为我只需要一次.(也许我在这里做错了什么?)mySubject只有在它获得第一个值之后才能以某种方式订阅onNext吗?

var mySubject = new Rx.BehaviorSubject(undefined);

mySubject.filter(function(value) {
  return value !== undefined;
}).subscribe(function(value) {
  // do something with the value
});
Run Code Online (Sandbox Code Playgroud)

javascript rxjs

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

ui-routers解决功能中的处理错误?(又名$ stateChangeError)将数据传递给错误状态?

在我的Angular应用程序中,我通过处理路由/状态ui-router.如果一切正常 - 它很棒.但是,处理函数内部错误的方法是什么resolve

我目前的解决方案:我有一个专用error状态(类似于常见状态404.html).看起来像这样:

// inside config()
.state('error', {
  url: '/error',
  controller: 'ErrorCtrl',
  templateUrl: 'error.html' // displays an error message
})
Run Code Online (Sandbox Code Playgroud)

如果在resolve我内部发生错误,我通过广播$stateChangeError的m run函数捕获它:

angular.module('myModule').run(function($state) {
  $rootScope.$on('$stateChangeError', function(event, toState, toParams, fromState, fromParams, error) {
    event.preventDefault();
    $state.go('error');
  });
});
Run Code Online (Sandbox Code Playgroud)

这有效,我想在我的'error.html'依赖于错误的内部更改我的错误消息.我不想污染它$rootScope,我想以ui-router'esk方式做到这一点.

我当前的解决方案使用$stateParams错误数据到我的error状态,但我必须使用JSONified查询参数,并得到一个非常丑陋的URL:

// inside config()
.state('error', {
  url: '/error?data&status&config', // accept these three params …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs angular-ui-router

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

react-router:如果激活<Link>,如何禁用它?

<Link>如果其URL已经激活,如何禁用react-router?例如,如果我的URL在点击时不会改变<Link>我想要阻止点击或渲染<span>而不是a <Link>.

我想到的唯一解决方案是使用activeClassName(或activeStyle)和设置pointer-events: none;,但我更喜欢使用在IE9和IE10中运行的解决方案.

javascript reactjs react-router

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

如何用RxJS对数据变化做出"反应"?

RxJS初学者:我在使用RxJS保存和跟踪数据更改时遇到问题.假设我在小视图/小部件中构建我的应用程序,并且每个视图/小部件都有自己的状态,应该对数据更改执行操作.我怎么做?

更具体的例子.假设我有一个名为的小部件,Widget并且Widget有一个标题和按钮.如果已单击按钮,则状态应包含标题和信息.从阅读RxJS的文档看,这似乎是一个很好的起点:

var widgetState = new Rx.Subject().startWith({
  wasClicked: false,
  title: 'foo'
});
Run Code Online (Sandbox Code Playgroud)

现在我希望在某些数据发生变化时收到通知:

var widgetStateChanges = widgetState.subscribe(function(data) {
  console.log('data: ', data);
  // what do i do with the data here?
  // i would like to merge the new data into the old state
});

widgetStateChanges.onNext({ title: 'bar' });
Run Code Online (Sandbox Code Playgroud)

我听到了变化,但我不知道如何保存它们.如果发生某些数据变化,我还想做一些特别的事情.像这样的东西.

widgetStateChanges.filter(function(e) {
  return e.wasClicked;
}).do(function(e) {
  console.log('Do something because was clicked now.');
});
Run Code Online (Sandbox Code Playgroud)

但是我不能filter订阅(widgetStateChanges),只能是一个subject(widgetState).

javascript rxjs

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

将JavaScript文件与依赖项连接并将其作为模块输出的最佳方法?

我知道这个问题经常出现在类似的变化中,但没有任何解决方案似乎完全符合我的需求.我有以下问题:

在开发中,我使用多个JS文件(每个"对象"一个文件).这些JS文件在彼此之间有几个依赖关系 - 有些依赖于其他文件,我需要先加载它们.目前我使用RequireJS以正确的顺序加载每个JS文件,因此我为每个文件定义了一个模块.好又花花公子.但是现在我想把我所有的JS文件连接成一个大的JS文件,它应该是一个模块本身.我使用RequireJS优化器r.js来做到这一点.我的问题:每个JS文件都连接到一个大的JS文件,但包含每个对象的模块定义.我在一个大文件中没有一个大模块,但是在一个大文件中有很多模块.

在那之后,我尝试使用grunt连接哪个工作正常,但忽略了文件的依赖关系.它只是按字母顺序连接每个文件,或者我必须在我的gruntfile中硬编码顺序.

我怎么解决这个问题?

就像我的问题的一个例子:我有以下文件(伪代码):

FileA
- define FileA module
- depends on FileB
- FileA Logic

FileB
- define FileB module
- FileB Logic
Run Code Online (Sandbox Code Playgroud)

我想要这个输出:

LibFile
- define LibFile module
- FileB Logic, FileA Logic
Run Code Online (Sandbox Code Playgroud)

但是我用r.js得到了这个(来自FileA和FileB的模块定义被复制):

LibFile
- define FileB module
- FileB Logic
- define FileA module
- depends on FileB
- FileA Logic
Run Code Online (Sandbox Code Playgroud)

我用咕噜声(错误的顺序)来得到这个:

LibFile
- FileA Logic
- FileB Logic
Run Code Online (Sandbox Code Playgroud)

也许这些问题有点愚蠢,但我无法用每个人似乎都使用的工具解决这个问题......我也试过了grunt-requirejs插件.但它抛出了几个我无法解决的错误.

谢谢,Pipo

module concatenation requirejs

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

RxJS:如何将event.preventDefault()作为drop事件?

我的加价:

<section id="drop-target">
  Drop file here...
</section>
Run Code Online (Sandbox Code Playgroud)

我的代码:

var dropTarget = document.getElementById('drop-target');

Rx.Observable.fromEvent(dropTarget, 'dragover').subscribe(function(event) {
  event.preventDefault();
});

var dropStream = Rx.Observable.fromEvent(dropTarget, 'drop');

dropStream.subscribe(function(event) {
  console.log('This will be called.');
  event.preventDefault();
});

dropStream.map(function(event) {
  console.log('This will not be called.');
  return event.dataTransfer.files[0].path;
});
Run Code Online (Sandbox Code Playgroud)

有关如何map调用我的上次回调的任何想法?我需要两个preventDefaultS代表dropdragover以防止浏览器打开该文件.

javascript rxjs

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

RxJS:如何用Observables做"if"?

假设我有两个observable和一个我想听一个observable的变化,如果另一个匹配某个条件.我尝试了它,zip但似乎我只会被通知,如果两个 可观察量都发生了变化,但是如果另一个观察到的情况是真的,我希望收到一个可观察的变化的通知.

我尝试了什么:

var firstState = new Rx.BehaviorSubject(undefined);
var secondState = new Rx.BehaviorSubject(undefined);

Rx.Observable.zip(firstState, secondState, function (first, second) {
  return {
    first: first,
    second: second
  }
}).filter(function (value) {
  return value.first !== undefined;
}).subscribe(function (value) {
  // do something with value.second
}); 
Run Code Online (Sandbox Code Playgroud)

我注意到有一个Rx.Observable.if,但我无法让它工作.

javascript rxjs

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