由买买提看人间百态

topics

全部话题 - 话题: callbacks
1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)
c*********e
发帖数: 16335
1
我本来也不信,上周debug出了这么一error message,改了之后error message就没了。
你说神奇不?
还好这有一证据
https://github.com/caolan/async
---------------
Multiple callbacks
Make sure to always return when calling a callback early, otherwise you will
cause multiple callbacks and unpredictable behavior in many cases.
async.waterfall([
function (callback) {
getSomething(options, function (err, result) {
if (err) {
callback(new Error("failed getting something:" + err.message));
// we shoul... 阅读全帖
d*******r
发帖数: 3299
2
来自主题: Programming版 - 尼玛 callback 真是反人类
我觉得这个贴的讨论很好呀,没说好,立马道歉纠正就避免吵架了呀
我1个多月下来,其实已经用习惯了 Node 的 callback 了,
感觉代码组织的好,多模块化自己的函数,代码也不至于乱的。
不过还是需要注意,async callbacks 和 sync executed statements 混着用,有时候
还是有点容易出错.
其实每次调用 async callbacks 的时候,相当于在 C 里面调用了 fork(), 之后的执
行逻辑就 virtually 分叉了。
不过我是觉得 callback 确实 *不是必要的*.
其实要表现 代码段A (或者 event A) 必须执行在 代码段B (或者 event B) 之前,
callback 的方法确实不是必须的.
sync executed statements 确实是更自然的表现方式,所以这个和 async callbacks
混着用的时候,还是觉得 async callbacks 用着没这么舒服。而且 async 和 sync 的
方式混用,其实是增加了 programer 的思维负担的.
l**********n
发帖数: 8443
3
来自主题: Programming版 - 请教一下:Javascript callback not working
query1 should be:
function(callback){
async.series({
one: function(callback){
setTimeout(function(){
callback(null, 1);
}, 200);
},
two: function(callback){
setTimeout(function(){
callback(null, 2);
}, 100);
}
},
function(err, results) {
callback(); // invoke the callback here according to the results or err
});
}
h****g
发帖数: 772
4
【 以下文字转载自 Programming 讨论区 】
发信人: huangg (水银泻地), 信区: Programming
标 题: slider多长时间调用一次callback?在哪里设置呢?
发信站: BBS 未名空间站 (Thu May 26 01:11:15 2011, 美东)
slider多长时间调用一次callback?在哪里设置呢?
通常滑块控件当值变化时调用callback,
但是当用鼠标改变值的时候,会连续调用多次callback
想知道哪里设置隔多久调用一次呢?似乎有的控件需要回车才调用callback函数的
我知道这个问题和用的库有关,但是我们组现在用的是fltk,不知有多少人在用
如果不是那么普遍的话,希望知道通常的概念,也许我能去看源程序
我也知道可以在callback函数中等到一定时间再动作,但还是想知道究竟多久调用一次
a*****e
发帖数: 1700
5
来自主题: Programming版 - 尼玛 callback 真是反人类

以下来自 Wikipedia 字条:
"Inversion of control carries the strong connotation that the reusable code
and the problem-specific code are developed independently even though they
operate together in an application. Software frameworks, callbacks,
schedulers, event loops and dependency injection are examples of design
patterns that follow the inversion of control principle, although the term
is most commonly used in the context of object-oriented programming."
Callback 之所以难以使用,直接原因就是因为 inversion of contr... 阅读全帖
h****g
发帖数: 772
6
slider多长时间调用一次callback?在哪里设置呢?
通常滑块控件当值变化时调用callback,
但是当用鼠标改变值的时候,会连续调用多次callback
想知道哪里设置隔多久调用一次呢?似乎有的控件需要回车才调用callback函数的
我知道这个问题和用的库有关,但是我们组现在用的是fltk,不知有多少人在用
如果不是那么普遍的话,希望知道通常的概念,也许我能去看源程序
我也知道可以在callback函数中等到一定时间再动作,但还是想知道究竟多久调用一次
d*******r
发帖数: 3299
7
来自主题: Programming版 - 尼玛 callback 真是反人类
我说两句吧,callback 其实没想象的那么乱,
毕竟控制流程的单位是function, 不是statement,所以还是比Goto好一些。
避免 callback hell 的方法是两个,
1. 是把一个大的callback chain 里面的部分分别命名,然后拆开成很多小的函数,这
样你测试也方便,出错信息也容易看懂些。
2.不想把一个必要的 callback function 一直传很长很远, 传来传去的,可以换成
event.
http://nodejs.org/api/events.html
i**i
发帖数: 1500
8
来自主题: Programming版 - 尼玛 callback 真是反人类
1. "callback 反人类" 是因为 "inversion of control"
> 查查什么是ioc. 屎盆子扣错了.
2. nodejs 鼓吹的 async programming 和 callback 没有一毛钱关系,用 co-
routine
一样可以做 async,而且早很多年就被做过了。强迫用户使用 callback 是 nodejs
的设计者脑残。
> nodejs 鼓吹的 async programming. 错了吗? "强迫用户使用 callback "是历
史问题,没办法的事. 说什么 "强迫 ... 设计者脑残。" 是你脑残.
3. continuation 是实现 co-routine 和 event-driven 之间转换的核心方法。你前面
说的 promise 和 generator 什么的,都属于 imitation of co-routine
> 这跟 nodejs 鼓吹的 async programming 有毛关系? 跟你的链接有毛关系?

routine
L***s
发帖数: 1148
9
来自主题: Programming版 - 尼玛 callback 真是反人类
我不熟js。略懂Python。
Python的coroutines (`yield` / enhanced generators)
和async io (`yield from`) 也是都callbacks的上层封装抽象,
底下都是裸体callbacks实现的。上下层同时暴露,虽然鼓励用上层封装。
js若要提供上层抽象估计也是类似思路,在现有的callbacks基础上封装。
coroutines和callbacks不是对立的,只是抽象层次不同,前者可用后者实现。
z****e
发帖数: 54598
10
1)你没有用rxjava,which在vert.x里面很强调使用的东西,不用rxjava,你是很难写
出优雅代码的,这个是用vert.x的常识,甚至可以说是java程序员的常识,这种东西压
根不值得拿来做例子
2)这个是匿名类,which是java8以前的东西,写swing的话,这种东西到处都是,这就
是为啥我讨厌callback hell的主因,后来发现js居然把这种垃圾给捡过去了,我都快
吐了
3)异步要谨慎使用,除了会导致callback hell以外,还会让原本同步的操作变成
callback hell,邯郸学步
4)java本身没有办法阻止你写出callback hell,因为你在用fp的方式用oop,而且还
是比较旧版的java,如果你真的要用fp,就别用java好了,因为java根本不让你用fp,
好吧,部分可以,这个其实是fp的问题,不是java的问题,java已经把你往oop上去引
导了,你却非要迕逆java的引导,我能说啥?
5)你可以自己动手解决这个问题,看看rxjava怎么做的,其实原理不难,只要理解了
reflection,publish/subscribe模... 阅读全帖
s********a
发帖数: 1680
11
来自主题: ebiz版 - amz乱remove callback的产品咋办
有个toysrus的玩具callback了,问题我手上的那个不是callback那个upc,一类产品但
是不是同样的东西,amz好像全都给封杀了,给amz发信说明?我手上那个toysrus自己
都还在卖,肯定不属于callback的东西
N********n
发帖数: 8363
12
来自主题: Programming版 - 尼玛 callback 真是反人类

That's spinning. At the end of the day callbacks force control
flow to go elsewhere and thus turn your programs into spaghetti
code and breaks its readability.
I'll say it's worse than goto. W/ goto at least you can refine
your code to avoid it. W/ callback there's no avoiding - if you
wanna go async in JS you have to provide callbacks. Bad design.
a*****e
发帖数: 1700
13
来自主题: Programming版 - 尼玛 callback 真是反人类
我什么时候说过 inversion of control 和 async 有关系?我说的是:
1. "callback 反人类" 是因为 "inversion of control"
2. nodejs 鼓吹的 async programming 和 callback 没有一毛钱关系,用 co-routine
一样可以做 async,而且早很多年就被做过了。强迫用户使用 callback 是 nodejs
的设计者脑残。
3. continuation 是实现 co-routine 和 event-driven 之间转换的核心方法。你前面
说的 promise 和 generator 什么的,都属于 imitation of co-routine
L***s
发帖数: 1148
14
future/promise也是callback的封装;下面还是直白的callback。
反过来理论上也行,就是说如果有原生的future/promise的话,
理论上可以把它封装成callback。
大多数语言,比如python3、新js,走第一条路。
w*s
发帖数: 7227
15
来自主题: Programming版 - 请教一下:Javascript callback not working
打开页面localhost:8080/db1, 页面停滞不动。
server端打印出step 1, step 2, 但没有step 3.
请问为什么?谢谢!
主程序main.js
const express = require('express')
const app = express()
const port = 8080
var db1 = require("./db.js");
app.get('/', (request, response) => {
response.send('Hello from Express!')
})
app.get('/db1', (request, response) => {
var q1 = db1.query1(function(){
console.log("step 3: " + q1);
response.send('Hello from db1! ' + q1);
});
})
app.listen(port, (err) => {
if (err) {
return ... 阅读全帖
w*s
发帖数: 7227
16
来自主题: Programming版 - 请教一下:Javascript callback not working
i just barely made it work.
it's very confusing, async takes callback.
Then there's a callback from db1.query1(callback),
the names are the same, very confusing.
j****i
发帖数: 496
17
有两个所来电话说要约callback,不知道是约早一点好,
还是晚一点好?一般callback后多久有消息? 若是有了
offer,是统一要求在12月1日前答复,还是offer中会给
定一个期限?Callback一般问些什么问题?
艘来搜去本版上找不到前人的经验教训篇。
还望过来人不赐吝教。多谢!
b*******3
发帖数: 196
18
来自主题: EB23版 - T2 callback
T1 transferred me, hit "1" for T2 callback, system said to wait 65 minutes
for callback.
But WTF, I've been waiting for 3 hours and T2 never called me back.
n*****t
发帖数: 22014
19
来自主题: Programming版 - 尼玛 callback 真是反人类
啊?node 多任务啊?看样子我哪里理解错了,谢谢指教。
另外请教一下,一堆 callback 链在一起了,有什么好的技巧避免吗?假设我要更新一
堆记录,全部更新之后才能 ,find,每 update 一次结束后才能 callback update
next,貌似只能这么串了?
l**********n
发帖数: 8443
20
来自主题: Programming版 - 尼玛 callback 真是反人类
callback hell. too many callbacks are hellish. it simply means the
programmer lacks control or design pattern skills.
a*****e
发帖数: 1700
21
来自主题: Programming版 - node callback的误解
你这里 fp 和 thread 指什么?
没有 functional programming 里面的闭包概念和内存垃圾回收,你用 C 来写
callback 程序(比如写个X11应用)就知道 javascript 其实已经是 fp 了。
(pre-emptive) thread 和 callback / co-routine 完全是两回事,面向的是不同问题
。请不要混为一谈。
j********x
发帖数: 2330
22
如果这个世界只有callback一种异步方式,你还会觉得它恶心么?
同理,node就是一个只有callback的语言,如果你接受了她,还会觉得她恶心么?
p*****2
发帖数: 21240
23
把一群callback变成一个callback。
当然一些类库做类似的工作,但是对于很多特殊的需求还是自己写Monad解决更方便。
c*********e
发帖数: 16335
24
不是。最近碰到一个node.js bug,
trace log里说,已经call了callback一次了,不能多次call一个callback.
这就是说,如果我的代码写成下面的形式,cb(1)执行完后,代码还会接着执行下面的
cb(2).
这个就象java的servlet里面一样,forward之后还要加return;
httpServletRequest.getRequestDispatcher("/home.jsp").forward(request
, response);
return;

你是不是想说cb(1)出现了exception,或者超时不返回,会出现什么状况,看来有些人
理解力有问题,或者不太门清自己在干什么
l**********n
发帖数: 8443
25
来自主题: Programming版 - 请教一下:Javascript callback not working
你这个写得一踏糊涂。不及格。你的query1并没有accept callback,所以callback
never called。我要是老师给评分的话,给0分。
l**********n
发帖数: 8443
26
来自主题: Programming版 - 请教一下:Javascript callback not working
callback是个设计的问题,设计得不好,有时难用,但不等于callback本身有什么问题
。java连closure都没有,只能用各种design pattern来修补,但不等于java这个语言
就是完美了。C#比java强多了,有closure,有property。
w****i
发帖数: 964
27
来自主题: Computation版 - qsub callback question (转载)
【 以下文字转载自 Programming 讨论区 】
发信人: westxi (huahua), 信区: Programming
标 题: qsub callback question
发信站: BBS 未名空间站 (Tue Jul 22 21:55:54 2008)
Is there a good way to run a callback script after qsub tasks finish? I am
touching flag files and using another script to monitor the flag file to
tell if the task finishes, and run the follow-up jobs. Is there a more
natural way to do that?
Thanks.

发帖数: 1
28
来自主题: CellularPlan版 - GVoice callback回拨不灵了,很么破?
Gvoice Callback 不知道是哪里出问题。
现在用truphone拨打电话时,电话每次都是直接接通,没有回拨,好似完全绕过GVoice
Callback这个app. 害我扣电话费余额。以前用着一直没有问题,从来没去修改过配置
,最近不知道为什么这样,没有回拨了,接通时手机屏幕显示null.
设置并没有问题,回拨号码都是对的。
a*o
发帖数: 19981
29
Mercedes Benz is recalling more than 2,500 cars in Austria.
Car club ÖAMTC informed today (Fri) that the German company was asking
owners of the C (W204), E (W212, C207, A207) und GLK (X204) series to have
their vehicles checked at a garage amid potential steering malfunctions.
The possibly affected cars were produced between June 2009 and February 2010
, according to ÖAMTC, which added that Mercedes had no information
about accidents caused by the potential steering failures.
News of ... 阅读全帖
d****u
发帖数: 2589
30
来自主题: ebiz版 - FedEx callback fee.
thanks,
just tell them the tracking number you wanna call back??
Ground Shipping Packages are OK for callback?
w****a
发帖数: 6326
31
来自主题: ebiz版 - fedex的callback太不靠谱了
我callback过express的包裹,好像送回家了。可能他们比较喜欢express吧,回来再
charge一次。
t*********u
发帖数: 26311
32
dell是老手
知道提前callback是不能guarantee的
只能在truck的时候才有效
b**********1
发帖数: 215
33
来自主题: JobHunting版 - 一道Javascript callback 的 面试问题
有没会callback funtion 的高手
J**D
发帖数: 230
34
来自主题: Immigration版 - 联系TIER2要求callback,根本没人理啊
完全没有callback嘛!
骗人的。
w****i
发帖数: 964
35
来自主题: Programming版 - qsub callback question
Is there a good way to run a callback script after qsub tasks finish? I am
touching flag files and using another script to monitor the flag file to
tell if the task finishes, and run the follow-up jobs. Is there a more
natural way to do that?
Thanks.
n*****t
发帖数: 22014
36
来自主题: Programming版 - 尼玛 callback 真是反人类
丁点大的破事也要 callback,然后再 call,流水线的美感都破坏了。
顺便请教一下,node 里发一串 db query,是不是实际还是挨个跑的?
N********n
发帖数: 8363
37
来自主题: Programming版 - 尼玛 callback 真是反人类

LOL. Too many people here said it already: Callback = modern day
GOTO. It ruins your code. This is one of the many reasons I don't
see JS ever being use a serious backend language.
c***r
发帖数: 4631
38
来自主题: Programming版 - 尼玛 callback 真是反人类
当年用c写windows程序的时候,不都是callback么?
a*****e
发帖数: 1700
39
来自主题: Programming版 - 尼玛 callback 真是反人类
核心问题出在 inversion of control。
更早的(比如 X window)就不说了,单是 callback 方式从 windows 3.0 的时候就流
行(且退流行)过。设计语言的人(比如说 nodejs 的设计者),如果不吸取历史教训
,注定要掉进前人踩过的坑里。nodejs 所倡导的 non-blocking/async programming
就是一个不折不扣的谎言。
解决 inversion of control 方法有很多,但基本原理都是一样的。利用
continuation 构建 co-routine 和 event-driven 的互换,因为两者等价(这个也被
证明过)。而 continuation 这种概念从 Lisp 开始就已经被 FP 玩透了。在所谓的主
流语言里,但凡不支持它的,最后都不得不通过各种方式来弥补,成为各种各样的半调
子框架,which unfortunately is the sad truth of status-quo.
建议使用 nodejs 的同学都先来学习一下它的坑:
http://notes.ericjiang.com/p... 阅读全帖
Y**G
发帖数: 1089
40
来自主题: Programming版 - 尼玛 callback 真是反人类
callback中用匿名函数,还可以访问closure中的变量,这不是挺好的事吗?
c******o
发帖数: 1277
41
来自主题: Programming版 - 尼玛 callback 真是反人类
这个我觉得scala的 future/promise Monad很好。不会在太大的时候混乱。非常接近人
类对async/parallel的思维。
不知道你们看过scala的future/promise Monad实现,其实里面都是callback,但是被
hide了。用起来就很舒服了。
a*****e
发帖数: 1700
42
来自主题: Programming版 - 尼玛 callback 真是反人类
对,这就是我说的两者等价。
Scala 和 Haskell 也没有 first class continuation,但是支持 continuation
monad 这种抽象方式,在 co-routine 和 callback 间灵活转换没有任何问题,虽然还
是有一定的 interpretive overhead。
a*****e
发帖数: 1700
43
来自主题: Programming版 - 尼玛 callback 真是反人类
的确不是对立的,可以互换,callback 也可以用 co-routine 实现。所以并不存在抽
象层次上的差别。
p*****2
发帖数: 21240
44
来自主题: Programming版 - node callback的误解
先不说可以用libarary 和 generator 解决
就node callback本身比fp, thread 已经容易百倍了
W***o
发帖数: 6519
45
来自主题: Programming版 - node callback的误解
曾经,折腾pthread, pre-emptive threads scheduling 折腾的我头疼, node
callback 感觉没有那么抽象,觉得要容易一些
d*******r
发帖数: 3299
46
来自主题: Programming版 - node callback的误解
1,2 楼的大概意思是,用 JS callback 的抽象来写并发执行的程序,比用 pthread
之类的抽象来写,要简单很多了。
n****1
发帖数: 1136
47
来自主题: Programming版 - node callback的误解
Thread显然是最简单直观的,只不过是运行效率差罢了,所以go有goroutine,haskell
里有forkIO,都是thread方式的api,callback级别的运行效率。
node要想摆脱callbk的恶名,必须脱胎换骨:把一个promise/future/generator/
whatever的东西彻底标准化,然后deprecate所有带callbk的api,强制放弃维护。否则
江山易改,禀性难移。
q*c
发帖数: 9453
48
来自主题: Programming版 - node callback的误解
callback 是串行, thread 是并行, 不是一回事吧?
c******o
发帖数: 1277
49
来自主题: Programming版 - node callback的误解
callback也可以并行,上面形式上是一样的,底下改成messaging就可以了。
1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)