0

コールバックについて質問があります。1 つの関数が setTimeout コールバックとして使用されるオブジェクトがあり、そのオブジェクトはコールバックが起動する前に削除できます。ノードは、タイムアウトが発生したときにそれを呼び出さないことを認識しますか、それとも参照を保持してとにかく呼び出しますか?

4

2 に答える 2

0

いくつかのテストを行いましたが、ノードがオブジェクトへの参照を保持し、コールバックを起動しているようです。

于 2012-05-23T17:32:14.007 に答える
-1

オブジェクトを「削除」した後は、必ずしも削除されるとは限りません。オブジェクトの参照を削除するだけです。メソッドは引き続き呼び出し可能です。

> cat test.js
var a = {                                                                                                                                                                                          
    method: function() {
        console.log('a' + a.property)   
    },
    property: '1'
}
setTimeout(a.method, 1000);
delete a;

> node test.js                                                                                                                                                                        
a1
于 2012-05-21T20:18:12.777 に答える