gpt4 book ai didi

JavaScript 行为和代码检查

转载 作者:行者123 更新时间:2023-12-03 11:37:27 26 4
gpt4 key购买 nike

我创建了这个plunker .

要点是这段代码:

var myObj = function (){
return {
getThis: function (callback) {
return callback("this");
}
}
}

var myDidSome = function () {
return {
DoSome: function (text) {
return text + " is cool";
}
};
};

var subObj = function (objG, didSome) {
var txt = objG.getThis(function (text) {
return didSome.DoSome(text);
});

console.log(txt);
}

new subObj(new myObj, new myDidSome);

因此,要解构此代码,请将 myObjmyDidSome 视为服务( Angular 服务)。我对 myObj.getThis 最感兴趣,它应该模仿一些 $http 响应。因此,当它完成时,调用我的callback函数,传入从$http获得的参数。

我一直在想的事情是$http异步。当数据返回时,我的 subOj 中的 txt 属性(将其视为 Controller )是否会正确填充,我认为它会到那时为止还是未定义

在我的场景中,这是完全同步的,这显然是有效的。

那么,我想知道async是否会成为这里的问题?传播对象的返回这种做法是否是好的做法,还是无关紧要的做法,还是不好的做法,我不应该这样做?

最佳答案

您不能像异步方法那样使用return。您必须在回调中完成所有操作。在您的示例中,didSome.DoSome(text) 的结果永远不会分配给 txt,即使在回调运行后也不会。

对于像这样记录响应的简单情况,在回调中执行它是一种可接受的方法。但是,如果您需要做一些更复杂的事情,您应该查看 promises via $q 。这些提供了一种更好的方法将长回调链重写为更线性的流程。

关于JavaScript 行为和代码检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26424958/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com