在Q承诺中,为什么fcall被称为即时电视
In Q promises, why is fcall called immediatelly?
拥有此代码
var Q = require('q');
var first = Q.fcall(function() {
console.log('This will be output before actual resolution?');
return "This is the result.";
});
setTimeout(function() {
console.log('Gonna resolve.');
first.then(function(r) {
console.log(r);
});
}, 3000);
为什么结果是
This will be output before actual resolution?
Gonna resolve.
This is the result.
代替
Gonna resolve.
This will be output before actual resolution?
This is the result.
如何使函数只在调用then
之后才被调用?
您误解了(典型的Javascript)承诺是如何工作的。他们不会等到你打给他们的.then
。他们完成自己的工作,完成后,他们调用传递到.then
中的任何函数。
所以,对于你的问题"我如何让函数只有在被调用之后才能被调用?",你不能,至少不能按照你想要的方式。这不是promise的工作方式。
但你当然可以这样做:
var Q = require('q');
var getFirst = function () {
return Q.fcall(function() {
console.log('This will be output before actual resolution?');
return "This is the result.";
});
};
setTimeout(function() {
console.log('Gonna resolve.');
getFirst().then(function(r) {
console.log(r);
});
}, 3000);
相关文章:
- 指令从来没有被称为angularjs
- 为什么它被称为XMLHttpRequest
- 在Q承诺中,为什么fcall被称为即时电视
- 为什么ng-click被称为按钮被点击的次数
- 根据DOM,HTML元素的开始和结束标记之间的内容被称为属性.这个房产的名字是什么
- 如何通过AJAX.BeginForm'onsuccess被称为
- 为什么javascript对象原型被称为“fn”
- 当任何列被称为“树映射”时,是否可以创建树映射;值”;
- 茉莉花单元测试法被称为
- 原始值被称为单例的现象是什么?
- 如果回调调用封闭函数,它是否被称为递归调用
- 为什么某些函数调用在 JavaScript 中被称为“非法调用”
- MVC 上传与回发(或者它可能被称为回调)
- Javascript - 为什么“函数构造函数”被称为“函数构造函数”
- 为什么charAt()和charCodeAt()被称为安全
- 为什么Jasmine被称为“;BDD”;即使没有“测试框架”;给定/何时/然后”;支持
- 为什么AngularJS被称为不适合GUI编辑器应用程序
- 为什么JavaScript被称为客户端技术
- 当应用程序在firefox操作系统手机中从后台启动/打开时,javascript/window事件被称为什么
- 为什么 Redux 化简器被称为化简器