मैंने इस चरण को कैसे हल किया?
ऐसे ही :
setTimeout((function(_deepFunction ,_deepData){
var _deepResultFunction = function _deepResultFunction(){
_deepFunction(_deepData);
};
return _deepResultFunction;
})(fromOuterFunction, fromOuterData ) , 1000 );
setTimeout किसी फ़ंक्शन के संदर्भ का इंतजार करता है, इसलिए मैंने इसे एक क्लोजर में बनाया, जो मेरे डेटा की व्याख्या करता है और मेरे डेटा के एक अच्छे उदाहरण के साथ फ़ंक्शन को वापस करता है!
शायद आप इस भाग को बेहतर बना सकते हैं:
_deepFunction(_deepData);
// change to something like :
_deepFunction.apply(contextFromParams , args);
मैंने इसे क्रोम, फ़ायरफ़ॉक्स और IE पर परीक्षण किया और यह अच्छी तरह से निष्पादित होता है, मुझे प्रदर्शन के बारे में पता नहीं है लेकिन मुझे काम करने की आवश्यकता है।
एक नमूना परीक्षण:
myDelay_function = function(fn , params , ctxt , _time){
setTimeout((function(_deepFunction ,_deepData, _deepCtxt){
var _deepResultFunction = function _deepResultFunction(){
//_deepFunction(_deepData);
_deepFunction.call( _deepCtxt , _deepData);
};
return _deepResultFunction;
})(fn , params , ctxt)
, _time)
};
// the function to be used :
myFunc = function(param){ console.log(param + this.name) }
// note that we call this.name
// a context object :
myObjet = {
id : "myId" ,
name : "myName"
}
// setting a parmeter
myParamter = "I am the outer parameter : ";
//and now let's make the call :
myDelay_function(myFunc , myParamter , myObjet , 1000)
// this will produce this result on the console line :
// I am the outer parameter : myName
हो सकता है कि आप इसे और अधिक जटिल बनाने के लिए हस्ताक्षर बदल सकते हैं:
myNass_setTimeOut = function (fn , _time , params , ctxt ){
return setTimeout((function(_deepFunction ,_deepData, _deepCtxt){
var _deepResultFunction = function _deepResultFunction(){
//_deepFunction(_deepData);
_deepFunction.apply( _deepCtxt , _deepData);
};
return _deepResultFunction;
})(fn , params , ctxt)
, _time)
};
// and try again :
for(var i=0; i<10; i++){
myNass_setTimeOut(console.log ,1000 , [i] , console)
}
और मूल प्रश्न का उत्तर देने के लिए अंतिम:
myNass_setTimeOut( postinsql, 4000, topicId );
आशा है कि यह मदद कर सकता है!
ps: क्षमा करें, लेकिन अंग्रेजी यह मेरी मातृभाषा नहीं है!