在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/ HTML問答
喵小咪 回答

react-native-sound這個庫不錯,我的很多項目都在用,雙平臺兼容

最好先去理解官方文檔


簡單的使用:
import Sound from 'react-native-sound'

// android 的音頻文件 存放在 android/app/src/main/res/raw 中
// ios 手動添加到資源庫即可

// 這里的 message.mp3 必須和你的音頻文件名稱一致
playSound(name = 'message.mp3') {

  Sound.setCategory('Playback') // 在靜音模式下啟用播放'

  let whoosh = new Sound(name, Sound.MAIN_BUNDLE, (error) => {
    whoosh.play((success) => {
      whoosh.release()
    })
  })

}


// 使用
playSound() // 默認播放 message.mp3
playSound('other.mp3') // 播放其它
練命 回答

樓主的問題

  1. 限制同一用戶在不同瀏覽器登陸的功能,利用session這個方案是否合理?-- 合理
  2. 我理解每個瀏覽器向后端發(fā)送請求后,都會形成相應(yīng)的session保存起來,查詢session數(shù)據(jù)一般是怎樣實現(xiàn)的?例如,怎樣查詢包含”user“的session的”id“ -- 這個是session store的實現(xiàn)細節(jié),不同的store不一樣,一般是存在數(shù)據(jù)庫里(mysql、mongo、redis等)。session id是可以自定義的,只要能跟用戶名關(guān)聯(lián)起來就行
  3. 怎樣實現(xiàn)后端主動向前端發(fā)起請求?比如用戶A未向后端發(fā)起請求的情況下,后端直接修改用戶A的cookie,使之過期? -- 這里在服務(wù)端清除session即可,有官方的api store.destroy(sid, callback)。

怎么限制同個用戶不能多個地方同時登錄

實現(xiàn)思路樓主應(yīng)該是有的,只是實現(xiàn)細節(jié)不清楚:

  1. 用戶登錄,存儲session。每個用戶的session對應(yīng)一個id,假設(shè)就是用戶名。
  2. 用戶再次登錄,檢測當前用戶是否已經(jīng)登錄 -> 檢測該用戶名,是否已經(jīng)存在session。

樓主不清除的應(yīng)該是,怎么把 用戶名、session id關(guān)聯(lián)起來,包括怎么在有用戶名的情況下,查詢到該用戶名對應(yīng)的session。

如果用express-session,可以這么實現(xiàn)。

genid選項:生成session id

genid返回的是session對應(yīng)的id,樓主根據(jù)實際情況進行自定義。

app.use(session({
  genid: function (req) {
    return req.query.usrname; // 生成session的id
  }
}));

session檢測

用戶再次登錄,通過session id 去檢測session是否存在,以此判斷用戶是否已登錄。

app.use(function (req, res, next) {
  req.sessionStore.get(req.query.usrname, function (error, session) {
    // 如果session存在,表示用戶已在其他地方登錄
  });
});
愛礙唉 回答

this.$refs.picker.open()的時候判斷mytime是否有值,沒有就設(shè)你的初始值,有就不變

還吻 回答

問題一,下次加載不會出問題
如果有數(shù)據(jù)比對,你想還原成原樣的話,可以使用asXML后正則匹配替換下。

preg_replace('/\<(\w+)\/\>/','<$1></$1>',$axxmlstr);//處理空接點自閉合標簽。

問題二,多看看w3cschool的教程吧。

傻叼 回答

這種公司多了去了,前期需求不清楚。從設(shè)計那兒只扔給一張圖,更慘的是幾張圖都找不到關(guān)聯(lián)關(guān)系。然后領(lǐng)導(dǎo)就根你要工作量評估,還是立項。
我的做法是根據(jù)自己的經(jīng)驗和團隊的能力拍腦袋的。一般都會在預(yù)期的工作量中多報1/3,甚至一半的時間,否則就是坑。
除非你有能力從公司層面改變這種模式。

未命名 回答

我找到答案了,是我一個同事,TMD在一個文件里重寫了localStorage.setItem方法,讓我找了4天,現(xiàn)在他已經(jīng)在醫(yī)院了

吃藕丑 回答

1.采用rem 設(shè)置大??;圖片和文字大小都應(yīng)該使用rem
2.違和,可能是你圖片寬和高大小設(shè)置問題;
3.或者使用百分比設(shè)置圖片寬度,高度auto

殘淚 回答

你若不指定默認值,那么total參數(shù)第一輪計算中就是第一個數(shù)。
[15.5, 2.3, 1.1, 4.7]這里相當于 15.5是第一個total(沒參與四舍五入),然后不斷加后面四舍五入的數(shù),結(jié)果就是23.5; 如果設(shè)置了total默認值0,它把后面所有的數(shù)都四舍五入后相加了,故是24.

第二個問題不用解答了,你肯定也明白,因為里面都是整數(shù),不會出現(xiàn)差異。

綰青絲 回答
  1. db的查詢?yōu)楫惒剑琾romise的resolve請在異步的回調(diào)函數(shù)中使用。
  2. 你第二個例子一直pending是因為你沒有在那個循環(huán)查詢db時使用resolve,沒有resolve或reject或異常,promise一直等待。

所以,每一次db查詢都應(yīng)被包裹在一個promise中,然后外面使用promise.all. 第二個例子,明顯你還少用了一個promise.All:
下面這段代碼處,也需要創(chuàng)建一個promise數(shù)組,循環(huán)結(jié)束后,執(zhí)行promise.all(promise數(shù)組),then 將結(jié)果使用最外側(cè)的resolve返回。

sql = 'select id FROM product where category like "%,' + _cid + ',%"';
run.executeSql(sql, [], ...

改造后,大概代碼時這個樣子的(并未執(zhí)行過,只是示范):

getProducts(params) {
    return new Promise((resolve, reject) =>{
        if (params) {
            this.getDb().then((db: SQLiteObject) =>{
                db.transaction((run) =>{
                    var sql = 'SELECT * FROM product_content';
                    run.executeSql(sql, [], (run, res) =>{
                        if (res.rows.length != 0) {
                            let result = {
                                product_ids: {}
                            };
                            let retTmp = [];
                            let exTmp = [1, 2, 100, 600, 500, 800, 900, 700, 701, 300]; 
                            let categoryIds = [];
                            let promise = [];
                            for (var i = 0; i < res.rows.length; i++) {
                                promise.push(new Promise((resolve1, reject1) =>{
                                    var product = res.rows.item(i);
                                    categoryIds.push(product.categoryIds);
                                    var innerPromise = [];
                                    for (var k = 0; k < categoryIds.length; k++) {
                                      innerPromise.push(new Promise((resolve2, reject2) => {
                                        var _cid = categoryIds[k];

                                        sql = 'select id FROM product where category like "%,' + _cid + ',%"';
                                        run.executeSql(sql, [], (run, res_id) =>{
                                            if (res_id.rows.length != 0) {
                                                var productids = [];
                                                for (var i = 0; i < res_id.rows.length; i++) {
                                                    var productId = res_id.rows.item(i).ID retTmp.push(productId)
                                                    // this.helperService.console('c0', productId)
                                                    productids.push(productId);
                                                }
                                                resolve2(productids);
                                            } else {
                                                resolve2([]);
                                            }
                                        });
                                      }));
                                    }
                                    Promise.all(innerPromise).then(productIdsArray=>resolve1(productIdsArray));
                                }))
                            }
                            Promise.all(promise).then(res =>{
                                // setTimeout(() => {
                                let ATmp = Array.from(new Set(retTmp))

                                if (newExTmp.length > 0) {
                                    exTmp.map((rettmp, index) =>{
                                        newExTmp.map(extmp =>{
                                            if (rettmp != extmp) {
                                                result.product_ids[newRet] = true
                                            }
                                        })
                                    })
                                }
                                resolve(result);
                                // }, 500)
                            })

                        } else {
                            let result = {
                                data: {
                                    product_ids: {}
                                }
                            };
                            resolve(result);
                        }
                    })
                })
            })
        }
    })
}
離人歸 回答

-目前我可以直接在html模板里訪問到后臺傳來的數(shù)據(jù)
直接在script標簽里 (并沒有加<%%>包裹)
<script>
var articleData= <%- JSON.stringify(articleData) %>;
console.log(articleData.title)
</script>
我的article就是一個json對象
這樣可以訪問到,但是寫在引入的外部js文件就不行了...總是暫時是可以不報錯的用了。

瘋子范 回答

@流蘇

clipboard.png
這是我的目錄結(jié)構(gòu),component里面放的是我寫的組件,ueditor里面就是編輯器的文件和代碼,我這個me.options.UEDITOR_HOME_URL,應(yīng)該設(shè)置死嗎?'/src/ueditor/'

溫衫 回答

看network啊

臭榴蓮 回答
<!– UC強制全屏 –>
<meta name=”full-screen” content=”yes”>
<!– QQ強制全屏 –>
<meta name=”x5-fullscreen” content=”true”>
壞脾滊 回答

我們是這樣做的后臺拿到微信的token去請求微信用戶信息,然后匹配openid是不是在我們的數(shù)據(jù)庫
如果有的話就幫用戶做登陸,后臺會設(shè)置cookie在瀏覽器,接下來前端接口的時候就會帶著cookie,如果沒有cookie就做登陸操作

笑浮塵 回答

web端跳轉(zhuǎn)地址是html.移動端是js 所以你必須區(qū)分一下

過客 回答

PolarisJack說的沒錯。

        /* 父組件 */
        /** 
        * 在index.js中的router注冊后
        * {
        * path: '/....',
        * name: 'aaa',
        * component: AAA
        * } 
        */
        this.$router.push({
                name: 'aaa',
                params: {
                        nameYouWant: name1,
                        nameYouWant2: name2
                }
        })
        
        /* 子組件 */
        // 子組件此處是$route, 沒有r, 此處輸出name1
        let thingsWeGet = this.$route.params.nameYouWant
寫榮 回答
可以根據(jù)源碼看出來

其中有一個循環(huán),遍歷了所有的小球,在循環(huán)的開始處,根據(jù)小球的速度,來為他進行一段偏移。

根據(jù)如下截圖,其作用是,在每一個循環(huán)里,對這個小球和其他所有小球做一個碰撞校驗,如果兩個小球發(fā)生重疊,則交換這兩個小球的速度(可以看出來這個程序?qū)崿F(xiàn)的不是彈性碰撞,而是簡單的交換速度)。

但是呢,這個循環(huán)是對所有小球發(fā)生的,也就是說,如果兩個小球不重疊,那么沒關(guān)系,其中先遍歷到的小球會把兩一個小球向相反的方向修改速度,然后下一個小球被循環(huán)到的時候,兩個小球就會遠離,由于速度是一樣的,因此會修正到碰撞前的距離,不會第二次觸發(fā)這個修改。

但是,如果兩個小球一開始就有大量重疊,那么第一次修改完以后,遍歷到第二個小球時,其速度依然不足以使其離開第一個小球,于是又觸發(fā)了第二次速度交換。然后他們倆又回到了之前的速度(相當于碰撞檢測失效了)

clipboard.png

這個同時也解釋為什么他們的運動軌跡一樣。

上面的說法稍微有點繞,我整理一下。
他們的運動位移是由循環(huán)時處理的,其流程是:

  1. 第一個小球按照第一個小球的速度位移
  2. 第一個小球進行碰撞檢測,發(fā)現(xiàn)和第二個小球重疊,于是交換速度
  3. 第二個小球按照原來的第一個小球的速度位移(其速度被第一個小球交換了)
  4. (由于重疊區(qū)域比較大,位移結(jié)束仍然重疊),第二個小球的碰撞檢測,發(fā)現(xiàn)和第一個小球重疊,再次交換速度。
  5. 結(jié)束循環(huán)時,第一個第二個小球都是按照第一個小球的速度進行了位移,但是相對距離和速度都沒有改變
糖果果 回答

1.javascript-algorithms

2.leetcode
3.算法導(dǎo)論

注:其實前端跟算法沒有太大關(guān)系,算法更多是思想,語言僅僅是實現(xiàn)的工具。不過鑒于前端接觸的算法有限,可以更多精力投入到中低程度的算法,至于那些動態(tài)規(guī)劃之類的看看就好了~