小编Mat*_*ang的帖子

使用javascript检测手机/平板电脑/网络客户端

我试图检测最终用户是在手机,平板电脑还是个人电脑上

我已经谷歌搜索了一段时间,显然没有简单的解决方案.

好吧,我想我不应该使用Resolution,因为现在有些平板电脑具有惊人的分辨率.

我不应该依赖方向,因为windows8笔记本电脑可以像平板电脑一样旋转.(响应式设计对我目前的项目来说太难了)

我一直在尝试使用UserAgent(认为它也有它的缺点),但是无法让它工作,下面是我用来区分手机/平板电脑和PC的不同版本的联合,他们只是不工作和我不知道为什么

var agents = ['android', 'webos', 'iphone', 'ipad', 'blackberry','iemobile','phone','mobile'];
                for(i in agents) {
                    if(navigator.userAgent.toLowerCase().match('/'+agents[i]+'/i')) {
                        return true;
                    }
                }


if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) {
                return true;
            }

 if( navigator.userAgent.match(/Android/i)
                 || navigator.userAgent.match(/webOS/i)
                 || navigator.userAgent.match(/iPhone/i)
                 || navigator.userAgent.match(/iPad/i)
                 || navigator.userAgent.match(/iPod/i)
                 || navigator.userAgent.match(/BlackBerry/i)
                 || navigator.userAgent.match(/Windows Phone/i)
                 || navigator.userAgent.match(/bada/i)
                 || navigator.userAgent.match(/Bada/i)
                 ){
                return true;
            }
Run Code Online (Sandbox Code Playgroud)

javascript browser-detection device-detection

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

在Async函数上调用Result会无限期地导致阻塞吗?

我从一个沉重的java背景中对C#有点新,并且仍在试图弄清楚await和async是如何工作的,这里有什么令我困惑的事情:

假设我有一个这样的函数(下面的Hackish代码仅用于实验):

public static bool CheckInternetConnection()
{
    Task<bool> result = CheckInternetConnectionAsync();
    return result.Result;
}

public async static Task<bool> CheckInternetConnectionAsync()
{
    if (NetworkInterface.GetIsNetworkAvailable())
    {
        SomeClass details = await ReturnARunningTask();
        return details.IsSuccessful;
    }
    return false;
}

public Task<SomeClass> ReturnARunningTask()
{
    return Task.Run(() => checkInternet());
}
Run Code Online (Sandbox Code Playgroud)

在主执行线程中,如果我调用它:

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

它将无限期地阻塞,我的假设是控制在"await"关键字上留下CheckInternetConnectionAsync()并阻止".Result".等待恢复时,主线程已被阻止并保持阻塞状态

我假设的原因是我可以看到任务完成并返回,但是await之后的代码永远不会被执行

但是,如果我这样做:

bool result = Task.Run(() => CheckInternetConnection()).Result;
Run Code Online (Sandbox Code Playgroud)

然后执行await语句后的代码,主线程继续

我的期望是它也会阻塞,因为主线程将在中间任务上被阻塞.中间任务将被阻止在.Result上

那么......有什么不同?在这种情况下,await执行后的代码是什么?

.net c# task async-await c#-5.0

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

为什么抛出自己导致异常?

我有一个C++程序,不能简单

#include <string>
#include <iostream>
using namespace std;

void throwE(){
  throw "ERROR";
}

int main(int argc, char* argv[]){
  try{
    throwE();

  } catch(const std::string& msg){
    cerr << msg << endl;
  }
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

但它在运行时会引发异常:

libc++abi.dylib: terminate called throwing an exception
Abort trap: 6
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我为什么会发生这种情况,为什么没有发现异常?

c++ exception

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