hi
老赵 ,昨天发微薄,可能没描述清楚,你没回复。
我对var asyncTask = eval(wind.compile("async",fnc)); 这个理解不是很清楚
看了文档,我觉得 如上的fnc 是一个“异步方法”,于是我 写了个demo
var asyncTask = eval(wind.compile("async", function(){
setTimeout( function(){
console.log(2)
},2000)
}));
var excut = eval(wind.compile("async", function (obj) {
console.log(1);
$await(asyncTask());
console.log(3);
}));
excut().start();
我期望excut执行的时候,打印出1,然后等待asyncTask执行返回2,然后再继续执行返回3
可实际结果打印的是1,3,2 , 是这里理解错了吗? 好像 $await(asyncTask());并没有真的等待方法执行完成。
然后我看了Async.sleep(delay) 代码的实现,里面使用Task.create 创建了一个任务,然后回调里面通过t.complete("status")方法来通知外面该异步方法执行ok了。
这样的话,如我上面代码,怎么能在setTimeout里面通知外部呢,就是说在setTimeout里面怎么拿到该任务的t这个对象,然后调用complete
还请指点一下。