当谈到angularjs中的$ http承诺时,我遇到了问题.我在我的服务中这样做:( getSomething函数应链接两个promises)
第二个函数使用外部回调函数!
app.service('blubb', function($http, $q) {
var self = this;
this.getSomething = function(uri, data) {
return self.getData(uri).then(function(data2) {
return self.compactData(uri, data2);
});
};
this.getData = function(uri) {
var deferred = $q.defer();
$http.get(uri).success(function(data) {
deferred.resolve(data);
}).error(function() {
deferred.reject();
});
return deferred.promise;
};
this.compactData = function(uri, data) {
var deferred = $q.defer();
/* callback function */
if(!err) {
console.log(compacted);
deferred.resolve(compacted);
} else {
console.log(err);
deferred.reject(err);
}
/* end of function */
return deferred.promise;
};
});
当我在我的控制器中使用该服务时,它不会输出console.log:
blubb.getSomething(uri, input).then(function(data) {
console.log(data) … 我有以下设置:
应用程序/模型/ my_module/service.rb
module MyModule
class Service < ActiveRecord::Base
def self.types
self.subclasses
end
def self.raw_types
self.types.map { |c| c.name.split("::").last }
end
end
end
require_dependency "my_module/service/rack"
require_dependency "my_module/service/rails"
require_dependency "my_module/service/sinatra"
Run Code Online (Sandbox Code Playgroud)
应用程序/模型/ my_module /服务/ rack.rb:
module MyModule
class Service::Rack < Service
end
end
Run Code Online (Sandbox Code Playgroud)
应用程序/模型/ my_module /服务/ rails.rb:
module MyModule
class Service::Rails < Service
end
end
Run Code Online (Sandbox Code Playgroud)
应用程序/模型/ my_module /服务/ sinatra.rb:
module MyModule
class Service::Sinatra < Service
end
end
Run Code Online (Sandbox Code Playgroud)
这到目前为止工作,但现在我的问题:
为什么我要添加这三行:
require_dependency "my_module/service/rack"
require_dependency "my_module/service/rails"
require_dependency "my_module/service/sinatra"
Run Code Online (Sandbox Code Playgroud)
到我的service.rb文件?
如果我不添加三行:
MyModule::Service.raw_types
=> []
Run Code Online (Sandbox Code Playgroud)
如果我添加三行:
MyModule::Service.raw_types …Run Code Online (Sandbox Code Playgroud) 我想基准(自己的)omniauth提供程序每秒可以登录多少次登录.我需要了解这个omniauth/oauth请求的性能如何,以及这种身份验证是否可以扩展?
到目前为止我得到了什么:
def performance_auth(user_count=10)
bm = Benchmark.realtime do
user_count.times do |n|
fork do
click_on 'Logout'
omniauth_config_mock(:provider => "foo", :uid => n, :email => "foo#{n}@example.net")
visit "/account/auth/foo/"
end
end
Process.waitall
end
puts "#{user_count} users Benchmark: #{bm}"
bm
end
Run Code Online (Sandbox Code Playgroud)
默认值为10个通过oauth提供程序foo进行并行身份验证的用户.
结果:
only 2 users can authenticate parallel in 1 sec (is this possible?)
10 users: 5.090777 sec
20 users: 10.471208 sec
50 users: 111.565979 sec ~ 2min!!!!
Run Code Online (Sandbox Code Playgroud)
我真的不知道我在做什么,如果这个代码是对的.
ruby ×2
angularjs ×1
benchmarking ×1
deferred ×1
oauth ×1
omniauth ×1
promise ×1
scalability ×1