小编Xåp*_* -的帖子

一个接一个地解决承诺(即按顺序)?

请考虑以下以串行/顺序方式读取文件数组的代码.readFiles返回一个promise,只有在按顺序读取所有文件后才会解析.

var readFile = function(file) {
  ... // Returns a promise.
};

var readFiles = function(files) {
  return new Promise((resolve, reject) => 

    var readSequential = function(index) {
      if (index >= files.length) {
        resolve();
      } else {
        readFile(files[index]).then(function() {
          readSequential(index + 1);
        }).catch(reject);
      }
    };

   readSequential(0); // Start!

  });
};
Run Code Online (Sandbox Code Playgroud)

上面的代码可以工作,但我不喜欢按顺序进行递归递归.是否有一种更简单的方法可以重写此代码,以便我不必使用我的奇怪readSequential功能?

最初我试图使用Promise.all,但这导致所有readFile调用同时发生,这不是我想要的:

var readFiles = function(files) {
  return Promise.all(files.map(function(file) {
    return readFile(file);
  }));
};
Run Code Online (Sandbox Code Playgroud)

javascript promise sequential q serial-processing

238
推荐指数
12
解决办法
16万
查看次数

Rails 3:我想列出我的rails应用程序中定义的所有路径

我想列出我的rails 3应用程序中所有已定义的辅助路径功能(由路由创建),如果可能的话.

谢谢,

routes ruby-on-rails ruby-on-rails-3

132
推荐指数
6
解决办法
11万
查看次数

如何在PreferenceFragment中侦听首选项更改?

如上所述这里,我继承PreferenceFragment并显示它的活动中.该文档解释了如何在此处监听首选项更改,但前提是您将PreferenceActivity子类化.由于我不这样做,我如何监听偏好变化?

我已经尝试在我的PreferenceFragment中实现OnSharedPreferenceChangeListener但它似乎不起作用(onSharedPreferenceChanged似乎永远不会被调用).

到目前为止这是我的代码:

SettingsActivity.java

public class SettingsActivity extends Activity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        // Display the fragment as the main content.
        getFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit();
    }
}
Run Code Online (Sandbox Code Playgroud)

SettingsFragment.java

public class SettingsFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener
{
    public static final String KEY_PREF_EXERCISES = "pref_number_of_exercises";

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        // Load the preferences from an XML resource
        addPreferencesFromResource(R.xml.preferences);
    }

    @Override
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
    {
        //IT NEVER GETS …
Run Code Online (Sandbox Code Playgroud)

android android-preferences sharedpreferences android-fragments android-activity

88
推荐指数
3
解决办法
6万
查看次数

在Python中嵌套函数时是否存在开销?

在Python中,如果我在父函数中有子函数,那么每次调用父函数时子函数是否"初始化"(创建)?将函数嵌套在另一个函数中是否存在任何开销?

python nested function

59
推荐指数
4
解决办法
8690
查看次数

如何获得子对象的全局/世界位置?

如何在另一个Object3D中获取Object3D的全局位置?

建立:

var parent = new THREE.Object3D();
parent.position.set(100, 100, 100);

var child = new THREE.Object3D();
child.position.set(100, 100, 100);
parent.add(child);

scene.add(parent);
Run Code Online (Sandbox Code Playgroud)

笔记:

我认为这将是这样做的方式:

console.log(child.localToWorld(parent.position));
Run Code Online (Sandbox Code Playgroud)

...但它给了我(100,100,100),而不是(200,200,200).

javascript three.js

43
推荐指数
2
解决办法
3万
查看次数

如何在没有引发错误的情况下检查模块是否存在?

在Angular 1.2中,ngRoute是一个单独的模块,因此您可以使用其他社区路由器ui.router.

我正在编写一个开源模块,旨在为多种不同的路由器实现工作.那么如何检查哪个路由器已加载或存在?

我正在我的模块中的工厂内执行以下操作,但它不能按照我期望的方式工作:

if (angular.module("ngRoute"))
  // Do ngRoute-specific stuff.
else if (angular.module("ui.router"))
  // Do ui.router-specific stuff.
Run Code Online (Sandbox Code Playgroud)

对于未加载的模块,它会引发错误.例如,如果应用程序正在使用ui.router,则会为ngRoute检查引发以下错误:

未捕获错误:[$ injector:nomod]模块'ngRoute'不可用!您要么错误拼写了模块名称,要么忘记加载它.如果注册模块,请确保将依赖项指定为第二个参数.

angularjs angularjs-routing angularjs-module

42
推荐指数
3
解决办法
3万
查看次数

在逗号上拆分字符串但忽略双引号内的逗号?

我有一些输入,如下所示:

A,B,C,"D12121",E,F,G,H,"I9,I8",J,K
Run Code Online (Sandbox Code Playgroud)

逗号分隔值可以按任何顺序排列.我想把字符串分成逗号; 但是,如果某些东西在双引号内,我需要它来忽略逗号并去掉引号(如果可能的话).所以基本上,输出将是这个字符串列表:

['A', 'B', 'C', 'D12121', 'E', 'F', 'G', 'H', 'I9,I8', 'J', 'K']
Run Code Online (Sandbox Code Playgroud)

我已经看过其他一些答案,而且我认为正则表达式会是最好的,但是我很难想出来.

python regex csv split double-quotes

41
推荐指数
1
解决办法
3万
查看次数

PreferenceFragment - getPreferenceManager()和getPreferenceScreen()之间的区别?

我已经实现了我自己的PreferenceFragment子类(在此详述),并希望在其中监听偏好更改.PreferenceFragment为您提供了两种执行此操作的方法:

getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
Run Code Online (Sandbox Code Playgroud)

getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
Run Code Online (Sandbox Code Playgroud)

应该使用哪一个?有什么不同?我真的不明白Android文档中区别.

android android-preferences android-sharedpreferences

37
推荐指数
3
解决办法
7341
查看次数

屏幕旋转时,为什么片段不会保留状态?

我在PreferenceFragment中获取一些自定义DialogPreference子类时遇到了一些麻烦,以便在旋转屏幕时保持可见.我在使用PreferenceActivity时没有遇到这个问题,因此我不知道它是Android错误还是代码问题,但我希望有人确认他们是否有相同的体验.

要对此进行测试,首先要创建一个包含至少一个DialogPreference的首选项屏幕(哪个子类无关紧要).然后在PreferenceActivity中显示它.运行应用程序时,请按DialogPreference以显示其对话框.然后旋转屏幕以使方向发生变化.对话框是否仍然可见?

然后尝试相同,但使用PreferenceFragment显示您的首选项而不是PreferenceActivity.再次,旋转屏幕时对话框是否仍然可见?

到目前为止,我发现如果使用PreferenceActivity,对话框将保持可见,但如果使用PreferenceFragment则不会.查看DialogPreference源代码,似乎正确的行为是对话框保持可见,因为在屏幕isDialogShowing重定向时onSaveInstanceState()调用时会保存状态信息.因此,我认为一个错误可能会阻止PreferenceFragment(及其中的所有内容)恢复该状态信息.

如果它是Android错误,那么它具有深远的影响,因为任何使用PreferenceFragment的人都无法保存和恢复状态信息.

有人可以确认吗?如果它不是一个错误,那么发生了什么?

android preferenceactivity android-preferences android-fragments dialog-preference

27
推荐指数
1
解决办法
2万
查看次数

如何检查变量是否是ES6类声明?

我从一个模块导出以下ES6类:

export class Thingy {
  hello() {
    console.log("A");
  }

  world() {
    console.log("B");
  }
}
Run Code Online (Sandbox Code Playgroud)

并从另一个模块导入它:

import {Thingy} from "thingy";

if (isClass(Thingy)) {
  // Do something...
}
Run Code Online (Sandbox Code Playgroud)

如何检查变量是否为类?不是类实例,而是类声明

换句话说,我将如何isClass在上面的例子中实现该功能?

javascript prototype class ecmascript-6

25
推荐指数
5
解决办法
2万
查看次数