使用链式 Q 承诺异步加载的局部变量
local variables loaded asynchronously with chained Q promises
我有一个疑问.. 如果我在承诺.then()
之前定义变量,我会在.then()
中提供它们,对吗?回调不是这样,但它应该使用q
承诺。
为了确保这一点,我问下面的代码是否正确,即使在多个请求的情况下也是如此。
因此,第二个.then()
的arg2
总是正确的,它不是最后一次调用 myapp() 的arg2
。
function myapp()
{
var arg1=1;
var arg2=undefined; // loaded async
var arg3=undefined; // loaded async
call_promise(arg1)
.then(function(data)
{
arg2 = data;
})
.then(function()
{
arg3 = call_function(arg2);
console.log(arg3);
})
.catch(function(err){});
}
是的,那会起作用。无论调用函数多少次,函数中都会创建新变量。并且由于 closure 属性,传递给then
处理程序的函数仍然能够访问 arg2
和 arg3
。
但是,执行此操作的正确方法是通过返回值来解决then
处理程序返回的承诺,如下所示
function myapp() {
var arg1 = 1;
return call_promise(arg1)
.then(function(data) {
return data;
}).then(function(arg2) {
console.log(call_function(arg2));
}).catch(function(err) {});
}
相关文章:
- 用于测试javascript中异步加载的脚本的工具
- 从要使用Protractor测试的服务器异步加载的动态数据列表的列表
- 异步加载角度控制器和工厂
- 加载 JavaScript 取决于以前异步加载的 JavaScript
- 按顺序异步加载JS脚本(等待上一个脚本完成)
- 在照片查看器(Javascript和jQuery)中异步加载图像时可能出现错误
- 异步加载的SVG过滤器feColorMatrix在Chrome中工作,而不是在Safari或Firefox中
- 异步加载Javascript
- 从框架中的函数异步加载 Javascript
- 异步加载特定的 CSS,并在加载时删除等待消息
- 异步加载 NPM 模块
- 如何使rails上的所有图像异步加载视图页面
- 任何控制Javascript异步加载顺序的方法
- 异步加载JQuery时Tabbed Box已损坏
- 脚本和图像是同步加载还是异步加载
- 使用TypeScript和Promises异步加载/卸载内容
- 异步加载脚本
- 在Rails4中使用Sprockets和Turbolinks时如何异步加载javascript
- 正在检测异步加载的按钮
- 异步加载ASP.NET绑定的Javascript,然后调用回调