我正在使用蓝鸟,我看到两种方法将同步函数解析为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) 我刚刚开始学习AngularJS并且与AngularJS的一些概念斗争.如果有人可以向我解释一些问题,那就太好了......
据我所知,这ng-click在技术上并不相同onclick(见这里),但两者都放在标记中.我认为这将是一个"不好的做法"?如果大多数人说这是"坏",为什么这是AngularJS的核心概念之一?我认为最好从JavaScript中选择DOM元素,而不是在标记中放置逻辑.
如果ng-click是对AngularJS中的点击事件做出反应的正确方法,我应该如何处理其他DOM事件?我看到有其他几个指令ng-mouseover,但并非所有DOM事件都有一个AngularJS等价物.我如何处理AngularJS中的'drop'事件(因此采用AngularJS方式 - 不是正常方式)?要明确:我想将文件拖到我的webapp中.
非常感谢Pipo
我用Cordova创建了一个Web应用程序,我需要在后台显示一个实时的摄像头流.似乎Cordova的Camera/Videos API只是打开原生相机/视频应用而不是返回实时相机数据.我真正需要的东西getUserMedia()只能在Opera和Chrome上使用(2012年6月).
getUserMedia()在Cordova或任何表现相似的插件中是否有垫片?
作为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) 在我的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) <Link>如果其URL已经激活,如何禁用react-router?例如,如果我的URL在点击时不会改变<Link>我想要阻止点击或渲染<span>而不是a <Link>.
我想到的唯一解决方案是使用activeClassName(或activeStyle)和设置pointer-events: none;,但我更喜欢使用在IE9和IE10中运行的解决方案.
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).
我知道这个问题经常出现在类似的变化中,但没有任何解决方案似乎完全符合我的需求.我有以下问题:
在开发中,我使用多个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
我的加价:
<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代表drop和dragover以防止浏览器打开该文件.
假设我有两个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 ×7
rxjs ×4
angularjs ×2
bluebird ×1
camera ×1
cordova ×1
dom-events ×1
module ×1
promise ×1
react-router ×1
reactjs ×1
requirejs ×1
stream ×1