事件处理程序和回调函数之间有什么区别?
有没有办法捕获JavaScript回调中的异常?它甚至可能吗?
Uncaught Error: Invalid value for property <address>
Run Code Online (Sandbox Code Playgroud)
这是jsfiddle:http://jsfiddle.net/kjy112/yQhhy/
try {
// this will cause an exception in google.maps.Geocoder().geocode()
// since it expects a string.
var zipcode = 30045;
var map = new google.maps.Map(document.getElementById('map_canvas'), {
zoom: 5,
center: new google.maps.LatLng(35.137879, -82.836914),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
// exception in callback:
var geo = new google.maps.Geocoder().geocode({ 'address': zipcode },
function(geoResult, geoStatus) {
if (geoStatus != google.maps.GeocoderStatus.OK) console.log(geoStatus);
}
);
} catch (e) {
if(e instanceof TypeError)
alert('TypeError');
else
alert(e);
}?
Run Code Online (Sandbox Code Playgroud) Python标准库定义了一个any()函数
如果iterable的任何元素为true,则返回True.如果iterable为空,则返回False.
它仅检查元素是否评估为True.我希望它能够如此指定一个回调来判断一个元素是否符合以下条件:
any([1, 2, 'joe'], lambda e: isinstance(e, int) and e > 0)
Run Code Online (Sandbox Code Playgroud) 从根本上说,我想从IntentService建立一个Activity的回调.我的问题与这里回答的问题非常相似:
但是,在答案代码中,活动代码被视为实现ResultReceiver.除非我遗漏了什么,否则ResultReceiver实际上是一个类,所以它无法执行此实现.
基本上,我问的是将ResultReceiver连接到该服务的正确方法是什么.我对Handler和ResultReceiver概念感到困惑.任何工作示例代码将不胜感激.
在开发相机应用程序时,我遇到了一个异常,只有当我切换到其他应用程序(onPause()对于我的应用程序)时才会发生.
01-15 17:22:15.017: E/AndroidRuntime(14336): FATAL EXCEPTION: main
01-15 17:22:15.017: E/AndroidRuntime(14336): java.lang.RuntimeException: Method called after release()
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.hardware.Camera.setPreviewDisplay(Native Method)
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.hardware.Camera.setPreviewDisplay(Camera.java:357)
01-15 17:22:15.017: E/AndroidRuntime(14336): at com.sora.cbir.yuki.image.leaf.CameraPreview.surfaceCreated(CameraPreview.java:32)
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.view.SurfaceView.updateWindow(SurfaceView.java:551)
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.view.SurfaceView.onWindowVisibilityChanged(SurfaceView.java:213)
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.view.View.dispatchWindowVisibilityChanged(View.java:4075)
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:742)
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:742)
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:742)
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:742)
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.view.ViewRoot.performTraversals(ViewRoot.java:858)
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.view.ViewRoot.handleMessage(ViewRoot.java:1995)
01-15 17:22:15.017: …Run Code Online (Sandbox Code Playgroud) 我在那里工作ViewPager和使用Fragment我找到了
在Fragment中的onCreateView()之前调用setUserVisibleHint()
我在Fragment支持库中使用android.support.v4.app.Fragment
这是图书馆的问题吗?
我怎么能摆脱它?
编辑
我重写setUserVisibleHint()而不是调用super来摆脱它.
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
//FIXED: setUserVisibleHint() called before onCreateView() in Fragment causes NullPointerException
//super.setUserVisibleHint(isVisibleToUser);
}
Run Code Online (Sandbox Code Playgroud) 我在回调函数中引用我的对象时遇到了一些普通的旧JavaScript(没有框架)的问题.
function foo(id) {
this.dom = document.getElementById(id);
this.bar = 5;
var self = this;
this.dom.addEventListener("click", self.onclick, false);
}
foo.prototype = {
onclick : function() {
this.bar = 7;
}
};
Run Code Online (Sandbox Code Playgroud)
现在当我创建一个新对象时(在DOM加载后,使用span #test)
var x = new foo('test');
Run Code Online (Sandbox Code Playgroud)
onclick函数中的'this'指向span#test而不是foo对象.
如何在onclick函数中获取对foo对象的引用?
比方说,我想在分配事件处理程序时传递一些额外的数据.请考虑以下代码:
private void setup(string someData)
{
Object.assignHandler(evHandler);
}
public void evHandler(Object sender)
{
// need someData here!!!
}
Run Code Online (Sandbox Code Playgroud)
我如何将someData放入我的evHandler方法?
有大量的库可以帮助修复回调综合症的层次.
事实上,有太多,我使用哪一个?
所以,我有一个加载的页面,并通过jquery.get发出几个请求,用它们的值填充下拉列表.
$(function() {
LoadCategories($('#Category'));
LoadPositions($('#Position'));
LoadDepartments($('#Department'));
LoadContact();
};
Run Code Online (Sandbox Code Playgroud)
然后调用LoadContact(); 这是另一个调用,当它返回时,它会填充表单上的所有字段.问题是通常,下拉列表并非全部填充,因此,它无法将它们设置为正确的值.
我需要做的是,只要其他方法完成并且回调完成执行,LoadContact就会以某种方式执行.
但是,我不想在下拉填充回调的末尾放置一堆标志,然后检查,并且在调用LoadContact()之前必须进行递归的setTimeout调用检查;
jQuery中有什么东西可以让我说,"当所有这些都完成时执行它."?
更多信息 我正在考虑这些问题
$().executeAfter(
function () { // When these are done
LoadCategories($('#Category'));
LoadPositions($('#Position'));
LoadDepartments($('#Department'));
},
LoadContact // Do this
);
Run Code Online (Sandbox Code Playgroud)
...它需要跟踪在执行方法期间发生的ajax调用,并且当它们全部完成时,调用LoadContact;
如果我知道如何拦截在该函数中创建的ajax,我可能会编写一个jQuery扩展来执行此操作.
我的解决方案
;(function($) {
$.fn.executeAfter = function(methods, callback) {
var stack = [];
var trackAjaxSend = function(event, XMLHttpRequest, ajaxOptions) {
var url = ajaxOptions.url;
stack.push(url);
}
var trackAjaxComplete = function(event, XMLHttpRequest, ajaxOptions) {
var url = ajaxOptions.url;
var index = jQuery.inArray(url, stack);
if (index >= 0) …Run Code Online (Sandbox Code Playgroud) callback ×10
android ×3
javascript ×3
asynchronous ×2
events ×2
exception ×2
any ×1
architecture ×1
binding ×1
c# ×1
camera ×1
google-maps ×1
java ×1
jquery ×1
node.js ×1
python ×1
scope ×1
service ×1