小编Bro*_*oel的帖子

如何知道所有Promise何时被动态"可迭代"参数解析?

我的问题是我不知道如何知道动态promise数组何时解决了所有的promise.

这是一个例子:

var promiseArray = [];
promiseArray.push(new Promise(){/*blablabla*/});
promiseArray.push(new Promise(){/*blablabla*/});
Promise.all(promiseArray).then(function(){
    // This will be executen when those 2 promises are solved.
});
promiseArray.push(new Promise(){/*blablabla*/});
Run Code Online (Sandbox Code Playgroud)

我这里有问题.当前Promise.all两个承诺被解决时,行为将被执行,但是,在这两个承诺被解决之前,第三个承诺被添加并且这个新承诺将不被考虑.

所以,我需要的是:"嘿Promise.all,你有一个动态数组来检查".我该怎么做?

请记住,这只是一个例子.我知道我可以将线Promise.all移到最后一行,但实际上新的承诺是在另一个承诺解决时动态添加的,而新的承诺也可以添加新的承诺,因此,它是一个非常动态的数组.

我拥有的真实用例是这样的:

  1. 我使用Twitter API检查是否有新的推文(使用搜索Api).
  2. 如果我发现新的推文,我将它添加到MongoDB(这里我们有Promises).
  3. 如果这些新推文与我在MongoDB中没有的用户相关(这里我们有新的承诺,因为我必须去MongoDB检查我是否有该用户),我们转到Twitter API获取用户信息(更多承诺)我们将这些新用户添加到MongoDB(是的,更多的承诺).
  4. 然后,我去MongoDB插入新的值来将新推文和那些新用户联系起来(更多的承诺!wiii!).
  5. 当所有对MongoDB的查询都已解决(所有选择,更新,插入)时,关闭MongoDB连接.

另一个难的例子:

var allPromises = [];

allPromises.push(new Promise(function(done, fail){
    mongoDB.connect(function(error){
        //Because mongoDB works with callbacks instead of promises
        if(error)
            fail();
        else
            ajax.get('/whatever').then(function(){
                if (somethingHappens) {
                    allPromises.push(new Promise(function(done, fail){ //This promise never will be take in account
                        // bla bla …
Run Code Online (Sandbox Code Playgroud)

javascript promise ecmascript-6

11
推荐指数
2
解决办法
3708
查看次数

博览会-本地通知在设备上不起作用

我正在使用EXPO和React Native为Android和iOS创建一个应用程序。此代码中有一个怪异的行为:它在Expo App上正常运行,但在实际设备(独立版本)中不运行(在iOS和Android上发生)。

这些本地通知的逻辑如下:目的是向用户显示3个本地通知:

  • 第一个,用户最后一次打开应用后的1周
  • 第二次,用户最后一次打开应用后的1个月
  • 用户最后一次打开应用后的最后两个月

我该怎么做?

第一次打开应用程序时,我问用户是否要查看通知。如果用户说是,我将该信息写入本地存储中,然后我请求USER_FACING_NOTIFICATIONS显示本地通知的权限。

我正在使用,USER_FACING_NOTIFICATIONS因为我不发送远程通知。

然后,用户第二次打开该应用程序,请执行以下操作:

  • 我删除了之前的所有通知
  • 我检查用户是否想查看通知
  • 我检查用户/设备是否授予我们显示通知的权限
  • 我安排了3条通知。

在这里,部分代码:

componentDidMount() {
    cancelAllScheduled()
      .then(() => {
        getUserNotificationsPermission().then(userWants => {
          if (userWants) {
            getDeviceNotificationsPermission().then(grantedByDevice => {
              if (grantedByDevice) {
                scheduleNotifications();
              }
            });
          }
        });
      })
      .catch(() => {
        // :shrug:
      });
}
Run Code Online (Sandbox Code Playgroud)

在这里,所有这些utils功能:

// Cancel all the notifications
const cancelAllScheduled = () => {
  return ExpoNotifications.cancelAllScheduledNotificationsAsync();
}

// Check in local storage if the user WANTS to see notifications …
Run Code Online (Sandbox Code Playgroud)

notifications react-native expo

9
推荐指数
1
解决办法
594
查看次数

如何在 React Native 或 expo 代码中存储敏感数据?(带有钥匙串和密钥库)

我看到几个问题询问“如何在 React Native 中存储敏感数据”(例如这个这个),但是,所有这些情况都在讨论动态获取一些敏感数据(例如,从服务器),然后存储它使用AsyncStorage. 但是,如果您需要在代码中写入敏感的令牌/密码怎么办?

例如,我想实现这个库: https: //github.com/fullstackreact/react-native-oauth 正如您在第一个示例中看到的,我必须在代码中编写秘密令牌。

所有react-native项目目录中是否有一个文件可以放置我的令牌,然后在应用程序中获取它?在应用程序中操作这些安全令牌有多安全?

谢谢

javascript security oauth oauth-2.0 react-native

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

Safari中的window.performance.getEntriesByType是否有polyfill?

在Safari中看起来window.performance.getEntrieswindow.performance.getEntriesByType未定义.

这些功能是否有填充剂?还是有人创造了一些替代方案?

我想要做的是在页面中加载所有资源.(所有图像,css和js文件)

javascript safari mobile-safari polyfills

6
推荐指数
1
解决办法
532
查看次数

如何编辑VS Code中的默认日志片段

我正在使用VS Code,并且有一个logJavaScript 的默认代码段,它基本上添加了console.log()一行但是也添加了一个新的空白行.我想删除那个新的空白行.你知道怎么做吗?我只能看到修改用户片段的方法,但这个片段不是由我创建的

code-snippets visual-studio-code

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

如何使用 Firestore 实现“Twitter Feed 模式”

我在这里处理一个设计模式。我正在创建一个应用程序,您可以在其中拥有关注者和追随者。类似于 Twitter、Instagram、x-social-network。

基本上,当用户打开“主页”视图时,我需要调用一个 Firebase 函数,该函数应该从 Firestore DB 获取关注者的活动源(如 twitter、insta 等)。

我想过做这样的事情:

对于此示例,假设用户A关注用户B

  1. 每次用户B执行应包含在 的提要中的操作时A,我都会在 中添加一个新对象B.feed。就像是:

B.feed['timestampId'] = { eventType: 'new-tweet', photoId: 123123};

  1. 当用户A打开主页视图时,我调用“getFeed”Firebase 函数(这一步不是重要的一步)。
  2. “getFeed”Firebase 函数将获取A关注的用户。
  3. 然后,对于每个A.following用户(在本例中只有B),我将获取该X.feed对象。在本例中:B.feed,我会将其返回给应用程序。

这里有什么问题?如果A关注超过 1 个用户(比方说,BC),常识表明我应该获取.feed用户B和 的C。按照旧的方式,使用 SQL,我会执行类似“SELECT FEED WHERE user_id IN ('B', 'C')”的操作。OR但是,您可能知道, Firestore 中没有调用。

意思是,我不能这样做:

admin.firestore().collection('users')
  .where('id', '=', 'B') …
Run Code Online (Sandbox Code Playgroud)

firebase google-cloud-functions google-cloud-firestore

5
推荐指数
0
解决办法
453
查看次数

如何检查Jasmine中"应该有文字"吗?

我需要做类似的事情:

expect(theElement.hasText()).toBe(true);
Run Code Online (Sandbox Code Playgroud)

你知道我怎么办吗?

我知道量角器中有一个"getText"函数,但是,我怎么能用呢?我该怎么办?:

expect(theElement.getText().lenght > 0).toBe(true);
Run Code Online (Sandbox Code Playgroud)

谢谢!

javascript functional-testing end-to-end jasmine protractor

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

如何知道用户何时使用 Spotify API 更改歌曲

我需要知道用户何时更改“当前正在播放”的歌曲。

目前,我正在使用https://api.spotify.com/v1/me/player/currently-playing获取有关“当前正在播放”的歌曲的信息。但是,我需要知道它何时更改为下一首(不仅因为歌曲完成,还因为用户按下 NEXT SONG 按钮时)。

我目前的解决方法是https://api.spotify.com/v1/me/player/currently-playing每秒调用一次端点,但如果我经常这样做,我将超出速率限制。

spotify

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

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

为什么mysqli_real_escape_string将连接对象作为第一个参数

我在PHP中使用MYSQLI函数很长一段时间.我总是问我同样的事情:为什么功能mysqli_real_escape_string需要第一个参数的连接?没有意义!它只是一个引用引号的功能.

你知道为什么吗?

php mysql mysqli

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

表单提交出错后如何重新填写文件输入

我有一个

<input type="text" name="name">
<input type="file" name="photo">
Run Code Online (Sandbox Code Playgroud)

提交表单后,我发现了一些错误,所以,我这样做:

<input type="text" name="name" value="<?php echo htmlspecialchars($_POST['name']); ?>">
<input type="file" name="photo" value="WHAT HERE?!">
Run Code Online (Sandbox Code Playgroud)

如您所见,我不知道我需要在值 attr 上写什么来重新填充用户的选定文件。我可以这样做吗?

谢谢!

php forms

1
推荐指数
1
解决办法
733
查看次数

如何忽略Sublime Text 3的定义索引中的文件夹?

Sublime Text添加了一个新功能来显示功能定义.

Sublime文本定义行为

你知道怎么从索引中禁用"dist"文件夹吗?

sublimetext3

1
推荐指数
1
解决办法
722
查看次数